home *** CD-ROM | disk | FTP | other *** search
/ QuickTime 2.0 Developer Kit / QuickTime 2.0 Developer Kit.iso / mac / MAC / Programming Stuff / Documentation / develop / develop Issue 12 / develop 12 / develop 12
Encoding:
Text File  |  1994-10-20  |  3.1 MB  |  4,930 lines  |  [ONLN/HLX2]

Text Truncated. Only the first 1MB is shown below. Download the file for the complete contents.
  1. develop
  2. The Apple Technical Journal
  3.     TECHNIQUES FOR WRITING AND DEBUGGING COMPONENTS
  4. TIME BASES: THE HEARTBEAT OF QUICKTIME
  5. BETTER APPLE EVENT CODING THROUGH OBJECTS
  6. ANOTHER TAKE ON GLOBALS IN STANDALONE CODE
  7. COMPONENTS AND C++ CLASSES COMPARED
  8. ANIMATION AT A GLANCE
  9. TOP 10 PRINTING MISDEMEANORS
  10. KON & BAL’S PUZZLE PAGE
  11. MACINTOSH Q & A
  12. Issue 12   December 1992
  13.     
  14.  
  15. Apple Computer, Inc.
  16. E D I T O R I A L  S T A F F
  17. Editor-in-Cheek  Caroline Rose
  18. Technical Buckstopper  Dave Johnson
  19. Our Boss  Greg Joswiak
  20. His Boss  David Krathwohl
  21. Review Board  Pete (“Luke”) Alexander, Neil Day, C. K. Haun, Jim Reekes, Bryan K. (“Beaker”) Ressler, Larry Rosenstein, Andy Shebanow, Gregg Williams
  22. Managing Editor  Monica Meffert
  23. Assistant Managing Editor  Ana Wilczynski
  24. Contributing Editors  Lorraine Anderson, Geta Carlson, Toni Haskell, Judy Helfand, Rebecca Pepper, Rilla Reynolds
  25. Indexer  Ira Kleinberg
  26. A R T  &  P R O D U C T I O N
  27. Production Manager  Hartley Lesser
  28. Art Director  Diane Wilcox
  29. Technical Illustration  Nurit Arbel, John Ryan 
  30. Formatting  Forbes Mill Press
  31. Printing  Wolfer Printing Company, Inc.
  32. Film Preparation  Aptos Post, Inc.
  33. Production  PrePress Assembly
  34. Photography  Sharon Beals, Lisa Jongewaard
  35. Electronic version production  
  36. In-Yung Kim, Dan Peterson, 
  37. Meredith Best, Cassi Carpenter    
  38. The stone jigsaw puzzle was pieced together by Hal Rucker of Rucker Huggins using Adobe Illustrator, FontMonger, Ray Dream Designer 2.0, and Adobe Photoshop.
  39. develop, The Apple Technical Journal, is a quarterly publication of the Developer Support Information group.
  40. The Developer CD Series disc for November/December 1992 or later contains this issue and all back issues of develop along with the code that the articles describe. The develop issues and code are also available on AppleLink and via anonymous ftp on ftp.apple.com.
  41.     
  42.  
  43.     EDITORIAL    Playing the postdating game   2
  44.     LETTERS    CDs lost in space.   4
  45.     ARTICLES    Techniques for Writing and Debugging Components  by Gary Woodcock and Casey King   Components aren’t just for QuickTime programmers anymore.   7
  46.         Time Bases: The Heartbeat of QuickTime  by Guillermo A. Ortiz   Understanding and manipulating time bases directly is sometimes helpful. Here are some tips.   41
  47.         Better Apple Event Coding Through Objects  by Eric M. Berdahl   Adding object model support to your existing OOP code may be easier than you think.   58
  48.         Another Take on Globals in Standalone Code  by Keith Rollin   For MPW users, here’s an alternative way to implement globals in standalone code.   89
  49.     COLUMNS    Be Our Guest: Components and C++ Classes Compared  by David 
  50. Van Brink   Components and C++ classes have some surface similarities but underneath are very different beasts.   37
  51.         Graphical Truffles: Animation at a Glance  by Edgar Lee   Three basic animation techniques everyone should know about.   53
  52.         Print Hints: Top 10 Printing Misdemeanors  by Pete (“Luke”) Alexander   You know the felonies, now learn the lesser printing crimes.   84
  53.         KON & BAL’s Puzzle Page: A Micro Bug  by Konstantin Othmer and Bruce Leak   Remember that little built-in debugger that no one ever uses? 
  54. People do.   134
  55.     Q & A    Macintosh Q & A   Apple’s Developer Support Center answers your product development questions.   120
  56.     INDEX    138
  57. EDITORIAL
  58. CAROLINE ROSE
  59. Dear Readers,
  60. The more observant among you may have noticed that we’ve made yet another change to develop with respect to how it’s dated. The last change happened with Issue 10, when we stopped designating issues with the current season and went back to using the current month, because the season isn’t the same around the world. Now we’ve  moved the date ahead by one month — also to accommodate worldwide distribution.
  61. For the terminally curious, here are the details: Apple Direct, our vanguard of information for business and technical decison makers, doesn’t reach other countries until two to eight weeks after it’s distributed in the U.S.; it might, for example, be folded into a local mailing whose schedule doesn’t coincide. So by the time some non-U.S. developers see Apple Direct, they think they’ve been sent a past issue rather than the latest one. To help convey to them that it is indeed the latest issue, it’s now dated with a month that’s closer to when they’ll see it. The Developer CD Series disc, Apple Direct, and develop all need to be in sync — so there you have it. What is now the December issue of develop was the Autumn issue last year and the October issue in 1990 (when our production cycle was a month out of phase from where it is now). Anyway, we hope those of you in the U.S. agree there’s no harm in a little time travel forward.
  62. A little time travel forward would be really handy for me while I’m writing these editorials, because I don’t always know what the state of the develop-related world will be two months in advance (that’s the lag time before you actually read this). In Issue 11’s editorial, for example, I couldn’t alert you to develop’s being in a new format on the Developer CD Series disc, because at that time we weren’t sure it would make it onto that disc. Yes, we’ve responded to your complaints about develop in HyperCard® by switching to that popular viewing tool that you may know as “BlueNote” — now “Apple DocViewer” — the same tool that’s used for viewing New Inside Macintosh. 
  63. The Developer CD corresponding to Issue 11 contained a prerelease version of DocViewer that still needed some work; for example, it wouldn’t work at all on a Macintosh Plus. In lieu of a time machine, I’ve consulted the Magic 8-Ball DTSuses to answer developer questions, and it tells me that the CD corresponding to this issue of develop — called the “November/December” CD, to ease the transition — will include a version 1.0 release of DocViewer along with Issues 11 and 12 in DocViewer 
  64. format. Version 1.0 should work on Macintosh Plus and newer models, with system software version 6.0 and later. Back issues of develop will eventually also make their way over into this format (the 8-Ball is hazy regarding just when this will happen). We’d really like your feedback on DocViewer and how well it works for reading develop (or anything else). Please check it out, and send your flames or even praise to AppleLink DEV.CD. 
  65. Whoops — did I say “DTS”? Old habits die hard. Another change we’re gradually making in develop is to shift from “Developer Technical Support” (DTS) to “Developer Support Center” (DSC). As you may have read in the April 1992 issue of Apple Direct, the DSC is a gateway to DTS as well as other support-related resources. It provides a focal point for developer queries — a single AppleLink address, DEVSUPPORT, and a single phone number, (408)974-4897. Developers who aren’t Apple Associates or Partners can contact the DSC for limited nontechnical support and referrals. We’ll be adjusting to this change along with others that are creeping in: Tech Note references no longer numbered; Inside Macintosh references that include New Inside Macintosh; DocViewer as the on-line viewing tool; postdating; and other changes that I foresee but don’t dare reveal lest I upset the delicate balance of the universe.
  66. Finally, I feel compelled to explain my bizarre trivia answer in Issue 11, about the upside-down character that wasn’t. I claimed the offending character was “8,” which on the contrary looks perfectly OK — not at all topheavy — in printed develop. It turns out that this “8” is topheavy only in LaserWriter output. That will teach me to use a media-specific question! I think I’ll quit while I’m behind and lay off trivia questions altogether for a while (even though I’ll miss those friendly letters from you).
  67. Caroline Rose
  68. Editor
  69. LETTERS
  70. POSTAL DEVILS EATING CDS?
  71. develop is the most exciting piece of regular mail I get after Japanese animation laserdiscs. I joyfully received Issue 11 but unfortunately the wolverines in the Postal Service dined on some of the plastic and no CD was to be found! Help!
  72. — Jim Perry
  73. Would you consider mailing develop in a nonperforated plastic wrapping? The perforation was two-thirds torn when I received it.
  74. — Eva Schlesinger
  75. I really enjoy develop, but I have to say that I’ve enjoyed it less recently. 
  76. Some time ago the CDs came in a small envelope well protected inside the magazine, and everything was fine. Now, develop is shipped with the CD in its own holder, which would seem to be a fabulous idea except that you were blind-sided by the U.S. Post Office.
  77. Every month since the CD got its own holder, the Post Office has mangled my plastic bag, CD holder, and magazine. Today my develop issue 11 arrived sans CD. I called the subscription office (1-800-545-9364) and they promise to send me another within four weeks.(!?) Growl.
  78. — Bob Cent
  79. Most of the mail I get is, unfortunately, on this subject. Our Production Manager, Hartley Lesser, really has been working on it. Even with Issue 11, we took a small step toward solving the problem: since many people thought someone was breaking open the package and stealing the CD, we inserted a      thick sheet of paper over the CD so that it wouldn’t be visible. But complaints of torn packaging still came in, so clearly the packaging just wasn’t sturdy enough. The packaging around Issue 12 and its CD should be about twice as thick as before and have no perforation. If that doesn’t work we’ll try something else.
  80. Issue 7 was the last one to list the 800 number you used to contact the subscription office (though it stubbornly has still shown up on our renewal notice). The correct number is 1-800-877-5548. The person you spoke to normally doesn’t handle calls regarding develop and didn’t know that replacement CDs should be mailed within a day or two of notification of the problem. Sorry for the mixup. We hope you’ll never need that service again!
  81. — Caroline Rose
  82. SCREENWRITING CAVEAT
  83. Your Issue 11 column on drawing to the screen was really useful to me. I had an animation program that wrote directly to the screen and it worked fine. But when I upgraded to a new accelerator card my program kept crashing. I spent months trying to figure out the problem. But your article fixed it straight away. All I needed was the SwapMMUMode calls. I don’t know why the previous card didn’t require them, but my program works fine now.
  84. — Tony Cooper
  85. Thanks for your interest in the column. We’re glad it was helpful to you.
  86. One thing we want to be sure to mention is that writing directly to the screen will break for sure on future Macintosh systems based on RISC technology. And we again want to    
  87. stress that the only applications that should even consider writing directly to the screen are games and other animation programs.
  88. — Brigham Stevens and Bill Guschwan
  89. USER-FRIENDLY RENEWING
  90. Recently I received a couple of renewal notices for develop in the mail. In trying to decipher these notices, I realized that user friendliness is something we should all be aiming for not just in the software we write, but in everything we do. It’s interesting how working with the Macintosh makes one aware of human interface issues in everyday life.
  91. Anyway, I think there are a few ways in which the develop renewal notices could be made more user friendly:
  92. 1. Leave a bigger space for writing the credit card number.
  93. 2. Clearly indicate on the renewal notice the date my subscription expires.
  94. 3. Is there any reason why the renewal notices are printed in red ink?
  95. —Tim Hammett
  96. We’re in the process of making the changes you suggested to the develop renewal notice. 
  97. 1. We’ll leave a bigger space for writing the credit card number. 
  98. 2. The notice will indicate when the subscription expires. You can also find this out at any time from your mailing label: the number that appears on a line by itself at the top of the label indicates the last issue you’ll receive unless you renew.
  99. 3. The reason for the red ink is so that this little piece of paper doesn’t get lost on your desk. But you’ve inspired us to change it to a more readable, deeper red.    We’re also correcting the 800 phone number on the notice, to 1-800-877-5548.
  100. Thanks for your letter. Without it, I would have assumed that the renewal notice (which isn’t really in my domain) was in great shape. I appreciate the enlightenment.
  101. —Caroline Rose
  102. REUSED CDS: IS IT ART?
  103. In Issue 10 of develop, Bruce Radford stated that he wasn’t sure what to do with his old CDs. He felt that he should recycle them, but he wasn’t sure how. Well, I have a suggestion. 
  104. Many people forget that reusing something is often even better than straight recycling. My school would have many uses for old issues of the develop CD. I know a few friends who would love copies, no matter how old; I could use them in a programming class; and other students could cut them up to make jewelry for school fundraisers. I also have many uses for old 256K SIMMs, which seem to be becoming about as useful as pennies now. 
  105. So go ahead and send the stuff that you think no one needs to me, or to a school near you.
  106. — Peter Bierman (age 16)
  107. BS Software
  108. 5757 Olentangy Blvd.
  109. Worthington, OH 43085
  110. Thanks for the idea. Day care centers and children’s museums have also been mentioned as possible destinations for old CDs. We suggest that before giving away CDs for for art projects, developers put a deep scratch through the data side of the CD if it contains any confidential or licensed data.    
  111.  
  112. For some wild and crazy ideas on this from Apple’s Developer Support Center, see the Q & A on page 126.
  113. — Caroline Rose
  114. DEVELOP INTERNET ADDRESS
  115. I’m on the Internet and develop contains only AppleLink addresses. I’m guessing that crose@applelink.apple.com is your Internet address. develop really should have an Internet address for academic developers to send e-mail to.
  116. — Eric Kofoid
  117. Adding “applelink.apple.com” to any AppleLink address converts it to an Internet address. The Internet addresses for me and develop’s Technical Editor Dave Johnson are listed on the last page of every issue.
  118. — Caroline Rose    BACK ISSUES CONUNDRUM
  119. I noticed that your back issues are listed at $13 in develop and at $10 in the APDA catalog.
  120. Why the discrepancy? Who should I order the back issues from?
  121. — Michael Tackie
  122. P.S. Great magazine. Very technical. I don’t understand everything, but that’s good; it forces me to become a better programmer.
  123. You pay a $3 shipping charge when you order from APDA, so it adds up to $13 in the end.
  124. — Caroline Rose
  125. P.S. Thanks!
  126.     
  127. CORRECTION TO APPLE EVENTS ARTICLE IN ISSUE 10     
  128. The “Apple Event Objects and You” article in develop Issue 10 contains two errors in the printed sample code. The first problem is that five lines were omitted from the end of GetWindowIndex. The code at the top of page 25 should be changed from 
  129.         return noErr;
  130. }
  131. to
  132. if ((rawIndex > numWindows)||(rawIndex <= 0)){
  133.     *index = 0;
  134.     return errAENoSuchObject;
  135. } else
  136.     *index = rawIndex;
  137.     return noErr
  138. }
  139.     The second bug is in the routine WriteRectToken (page 30). The following call 
  140. BlockMove(*thisRectDesc.dataHandle,
  141.     &tokenPtr->theRect,sizeof(Rect));
  142. should be changed to
  143. BlockMove(*thisRectDesc.dataHandle,
  144.     (Ptr)tokenPtr->theRect,sizeof(Rect));
  145. Since theRect is actually a pointer to a rectangle (see the declaration at the top of page 29), the first version would have destroyed the pointer and four bytes of the following long integer.
  146. Thanks to Doug McKenna, the author of Resorcerer, for pointing out these problems.
  147.     
  148.  
  149.  
  150. TECHNIQUES FOR WRITING AND DEBUGGING COMPONENTS
  151. GARY WOODCOCK AND CASEY KING
  152. Programmers first saw the Component Manager as part of the QuickTime 1.0 system extension. Now that the Component Manager is part of System 7.1, components aren’t just for QuickTime programmers any more. This article shows you how to take advantage of the power and flexibility of components as a way to give extended functionality to any Macintosh application.
  153. Software developers are continually searching for ways to avoid reinventing the proverbial wheel every time they need new capabilities for their programs. A new approach is available with components. Components are modules of functionality that applications can share at run time. They enable applications to extend the services of the core Macintosh system software with minimal risk of introducing incompatibilities (unlike, for example, trap patching). 
  154. As Figure 1 suggests, components also encourage a building-block approach to solving complex problems. Higher-level components can call lower-level components to build sophisticated functionality, while at the same time making the application program interface (API) much simpler. What’s more, because components are separate from an application that uses them, you can modify and extend components without affecting the application.
  155. Components are maintained by the Component Manager, which is responsible for keeping track of the components available at any given time and of the particular services they provide. The Component Manager provides a standard interface through which applications establish connections to the components they need.
  156. Almost anything you can dream up can be a component — video digitizer drivers, dialogs, graphics primitives, statistical functions, and more. QuickTime 1.0 itself contains a number of useful components, including the movie controller, the sequence grabber, and a variety of image compressors and decompressors (codecs), all of which are available to any client application.
  157.  
  158.  
  159. Figure 1
  160. Using Components as Software Building Blocks
  161. To demonstrate the all-around usefulness of components, we’ll examine the development and implementation of a component that does some rather trivial mathematical calculations. This example will help us focus on concepts rather than getting lost in the details of solving a complex problem. We’ll build a fairly generic component template that you can use in your own designs. We’ll also discuss some advanced component features, such as extending component functionality, capturing components, and delegating component functions. Finally, we’ll show you some techniques and tools for debugging your components. The accompanying Developer CD Series disc contains our example component’s source code, a simple application to test our component, and the debugging tools.
  162.  
  163. COMPONENT TRIVIA #1
  164. The original name for the Component Manager (as conceived of by Bruce “Of course the feature set is frozen!” Leak) was the Thing Manager. Components were referred to as “things” (as were the QuickTime project schedules, the significance of which engineers couldn’t easily grasp). The use of this terminology led to one of two conditions in most QuickTime engineers: in some, an irrepressible compulsion to make “thing” puns, and in others, perhaps as a backlash against the former, an almost pathological aversion to the use of the word “thing” in normal conversation.
  165. Note that this article doesn’t spend a great deal of time explaining how applications can find and use components. We assume that you’ve invested some effort in reading the QuickTime Developer’s Guide (part of the QuickTime Developer’s Kit). If you haven’t, we strongly urge you to do so, since the Developer’s Guide contains the definitive description of the Component Manager.
  166. SHOULD YOU WRITE A COMPONENT?
  167. OK, components sound interesting, but should you write one? Why write a component when you can just code the functionality you need directly into your application or write a device driver? Here are a few reasons to choose components over the alternatives:
  168. •    Components are easier for applications to use. Client applications don’t have to know what they’re looking for before opening a service. This is different from device drivers, where open calls must provide either a driver name or a refNum. An application can simply tell the Component Manager, “I’m looking for somebody to do this for me. Is anybody available?” In addition, clients don’t need to set up parameter blocks or make control/status calls to use components. Armed with the API of the component type, the caller simply makes normal function calls to the component, and the Component Manager does the work.
  169. •    Components are more flexible. You can modify the behavior of a component by overriding its capabilities without adversely affecting the application. The Component Manager enables the component to communicate its capabilities to clients dynamically.
  170. •    Components allow you to design more flexible applications. They can be used to divide the functional aspects of an application into parts. For example, a word processing application might use a spelling checker component, a thesaurus component, and a grammar checker component. If the thesaurus component is updated, the application code doesn’t have to change at all. A user can simply replace the old thesaurus component with the new one.
  171. •    Components are easier to implement than device drivers. There are no declaration structures, driver headers, assembly code glue, installation INITs, or any of the peculiarities that come with device drivers.
  172. •    Components are easier to debug than device drivers. No longer will you be walking the unit table to find your driver so that you can set a breakpoint at your control call dispatcher. You can easily and effectively debug your code using a source-level debugger such as Symantec’s THINK C Debugger.
  173. Now that you know the advantages of components, you have to decide whether the functionality you need is a good candidate for a component. To do this, ask yourself the following:
  174. •    Do I anticipate reusing this functionality in other applications? Components are ideal for providing services that many applications can use.
  175. •    Do I anticipate having to modify certain aspects of this functionality in the future? Functionality encapsulated in a component can be extended or modified without disturbing the original interface specification.
  176. •    Is there a benefit to users in establishing a common API for this functionality, so that other developers can use or extend it? You might want to be able to allow third parties to extend your application without having to expose detailed information about your application’s internal data structures. For example, many of the “plug-in” modules for today’s popular graphics applications could easily be implemented as components.
  177. A “yes” to more than one of these questions means that components are probably a good approach for your next product. But you still have one last question to answer: has someone else already written a component that solves your problem? To find out, you need to contact Apple’s Component Registry group (AppleLink REGISTRY) and ask them. These folks maintain a database of all registered component types, subtypes, and manufacturers, as well as the corresponding APIs (if they’re publicly available). A check with the Registry is mandatory for anyone who’s contemplating writing a component. 
  178. If after all this you find that you’re still about to embark into uncharted territory, read on, and we’ll endeavor to illuminate your passage.
  179.  
  180. COMPONENT TRIVIA #2    
  181. The original component type for the sequence grabber component was, logically enough, 'grab'. The engineer primarily responsible for the sequence grabber, Peter Hoddie, requires massive infusions of Diet Coke to function properly. During a particularly intense bout of engineering mania, the Diet Coke supply was exhausted; unbeknownst to anyone, Peter became temporarily 
  182.     tdyslexic and changed the sequence grabber component type to 'barg'. The change was never noticed, and it caused no real harm, other than the wasted time developers spent trying to figure out what 'barg' might be an acronym for (Boffo Audio Reverb Gadget? Bodacious Analog Reference Gizmo?). Peter’s brain has since returned to its (relatively) normal state.
  183.     
  184. COMPONENT BASICS 101
  185. Client applications use the Component Manager to access components. As shown in Figure 2, the Component Manager acts as a mediator between an application’s requests for component services and a component’s execution of those requests. The Component Manager uses a component instance to determine which component is needed to satisfy an application’s request for services. An instance can be thought of as an application’s connection to a component. We’ll have more to say about component instances later on. 
  186. Figure 2
  187. How Applications Work With Components
  188. Conceptually, components consist of two parts: a collection of functions as defined in the component’s API, and a dispatcher that takes care of routing application requests to the proper function. These requests are represented by request codes that the 
  189. Component Manager maps to the component functions. Let’s take a look at both the component functions and the component dispatcher in detail.
  190. COMPONENT FUNCTIONS
  191. There are two groups of functions that are implemented in a component. One group does the custom work that’s unique to the component. The nature of these functions depends on the capabilities that the component is intended to provide to clients. For example, the movie controller component, which plays QuickTime movies, has a number of functions in this category that control the position, playback rate, size, and other movie characteristics. Each function defined in your component API must have a corresponding request code, and you must assign these request codes positive values (0 or greater).
  192. The second group of functions comprises the standard calls defined by the Component Manager for use by a component. Currently, four of these standard calls must be implemented by every component: open, close, can do, and version. Two more request codes, register and target, are defined, but supporting these is optional. The standard calls are represented by negative request codes and are defined only by Apple. 
  193. Here’s a quick look at each of the six standard calls.
  194. The open function. The open function gives a component the opportunity to initialize itself before handling client requests, and in particular to allocate any private storage it may need. Private storage is useful if your component has hardware-dependent settings, local environment settings, cached data structures, IDs of component instances that may provide services to your component, or anything else you might want to keep around. 
  195. The close function. The close function provides for an orderly shutdown of a component. For simple components, closing mainly involves disposing of the private storage created in the open function. For more complex components, it may be necessary to close supporting components and to reset hardware. 
  196. The can do function. The can do function tells an application which functions in the component’s API are supported. Clients that need to query a component about its capabilities can use the ComponentFunctionImplemented routine to send the component a can do request. 
  197. The version function. The version function provides two important pieces of information: the component specification level and the implementation level. A change in the specification level normally indicates a change in the basic API for a particular component class, while implementation-level changes indicate, for example, a bug fix or the use of a new algorithm. 
  198. The register function. The register function allows a component to determine whether it can function properly with the current system configuration. Video digitizer components, for example, typically use register requests to check for the presence of their corresponding digitizing hardware before accepting registration with the Component Manager. A component receives a register request code only if it explicitly asks for it. We’ll see how this is done when we walk through our sample component. 
  199. The target function. The target function informs your component it has been captured by another component. Capturing a component is similar to subclassing an object, in that the captured component is superseded by the capturing component. The captured component is replaced by the capturing component in the component registration list and is no longer available to clients. We’ll discuss the notion of capturing components in more detail later. 
  200. THE COMPONENT DISPATCHER 
  201. All components must have a main entry point consisting of a dispatcher that routes the requests the client application sends via the Component Manager. When an application calls a component function, the Component Manager passes two parameters to the component dispatcher — a ComponentParameters structure and a handle to any private storage that was set up in the component’s open function. The ComponentParameters structure looks like this:
  202. typedef struct {
  203.     unsigned char     flags;    
  204.     unsigned char     paramSize;            
  205.     short                 what;                        
  206.     long                 params[kSmallestArray];        
  207. } ComponentParameters;
  208. The first two fields are used internally by the Component Manager and aren’t of much interest here. The what field contains the request code corresponding to the component function call made by the application. The params field contains the parameters that accompany the call.
  209. Figure 3 shows a detailed view of how a component function call from an application is processed. The component dispatcher examines the what field of the ComponentParameters record to determine the request code, and then transfers control to the appropriate component function.
  210. REGISTERING A COMPONENT
  211. Before a component can be used by an application, it must be registered with the Component Manager. This way the Component Manager knows which components are available when it’s asked to open a particular type of component. 
  212. Figure 3
  213. Processing an Application’s Request for Component Services
  214. Autoregistration versus application registration. There are two ways that you can register a component. By far the easiest way is to build a standalone component file of type 'thng'. At system startup, the Component Manager will automatically register any component that it finds in files of type 'thng' in the System Folder and in the Extensions folder (in System 7) and its subfolders. The 'thng' component file must contain both your component and the corresponding component ('thng') resource. The definition of this resource can be found in the Components.h header file and is shown below.
  215. typedef struct {
  216.     unsigned long     type;             /* 4-byte code */
  217.     short                 id;
  218. } ResourceSpec;
  219. typedef struct {
  220.     ComponentDescription td;                     /* Registration parameters */
  221.     ResourceSpec            component;             /* Resource where code is found */
  222.     ResourceSpec            componentName;     /* Name string resource */
  223.     ResourceSpec            componentInfo;     /* Info string resource */
  224.     ResourceSpec            componentIcon;     /* Icon resource */
  225. } ComponentResource;
  226. Figure 4 shows the contents of the component resource that we’ll use for the example component.
  227. Figure 4
  228. Math Component Resource
  229. An application can also register a component itself using the Component Manager call RegisterComponent or RegisterComponentResource. As we’ll see, this registration method facilitates symbolic debugging of components. 
  230. Global versus local registration. Components can be registered locally or globally. A component that’s registered locally is visible only within the A5 world in which it’s registered, whereas a globally registered component is available to all potential client applications. Typically, you register a component locally only if you want to restrict its use to a particular application.
  231. A SIMPLE MATH COMPONENT 
  232. To help you understand how to write a component, we’re going to go through the whole process with an example — in this case, a simple math component. We start by contacting the Apple Component Registry group, and to our astonishment (and their bemusement), we find that there are no registered components that do simple math! We assume for the moment that the arithmetic operators in our high-level programming language are unavailable and that our application is in desperate need of integer division and multiplication support.
  233. We create a component called Math that performs integer division and multiplication.
  234. THE FUNCTION PROTOTYPE DEFINITION
  235. We need to define function prototypes for each of the calls in our component API — namely, DoDivide and DoMultiply. The function prototype for the DoDivide component call can be found in MathComponent.h and is shown below. The declaration for the DoMultiply function is similar. 
  236. pascal ComponentResult DoDivide (MathComponent mathInstance,
  237.     short numerator, short denominator, short *result) = 
  238.     ComponentCallNow (kDoDivideSelect, 0x08);
  239. This resembles a normal C language function prototype with a relatively straightforward parameter list. The mathInstance parameter is the component instance through which the application accesses the component; we’ll see how an application gets one of these instances in a moment. The numerator and denominator parameters are self-explanatory and are passed in by the calling application as well. The contents of the last parameter, result, are filled in by the DoDivide function upon completion.
  240. Those of you who have a passing familiarity with C are probably more than a little curious about the last portion of the declaration. ComponentCallNow is a macro defined by the Component Manager (see “Inside the ComponentCallNow Macro” for the nuts and bolts of how the macro works). Its main purpose is to identify a 
  241.  
  242. INSIDE THE COMPONENTCALLNOW MACRO    
  243. Some of you may be wondering exactly what the ComponentCallNow macro does. Let’s expand this macro for our DoDivide component call and examine it in detail.
  244.     = {0x2F3C, 0x08, kDoDivideSelect, 0x7000,
  245.         0xA82A};
  246. The first element, 0x2F3C, is the Motorola 68000 opcode for a move instruction. Execution of this instruction loads the contents of the next two elements onto the stack. The next element, 0x08, is the amount of stack space that we calculated for the function parameters of the DoDivide call. The third element, kDoDivideSelect, is the request 
  247.     code corresponding to the DoDivide call. The fourth element, 0x7000, is the Motorola 68000 opcode for an instruction that sets the contents of register D0 to 0. The Component Manager interprets this condition as a request to call your component rather than handling the request itself. The last element, 0xA82A, is the opcode for an instruction that executes a trap to the Component Manager.
  248. While you can use this inline code in your component function declarations directly, we recommend that you use the ComponentCallNow macro to make your code more portable.    
  249. routine as a component function, as opposed to a normal C function. When an application calls the DoDivide function, the macro is executed. This causes a trap to the Component Manager to be executed, allowing the Component Manager to send a message to the component responsible for handling the function. 
  250. The first parameter to the ComponentCallNow macro is an integer value representing the request code for the integer division function. As noted earlier, your component’s dispatcher uses this request code to determine what function has been requested. Recall that you may only define request codes that are positive.
  251. The second parameter is an integer value that indicates the amount of stack space 
  252. (in bytes) that’s required by the function for its parameters, not including the component instance parameter. Be careful to note that Boolean and single-byte parameters may need to be passed as 16-bit integer values (see the section “Eleven Common Mistakes” for details). For the Math component, the space required for the DoDivide function is two 16-bit integers followed by a 32-bit pointer, for a total of eight bytes.
  253. THE MATH COMPONENT DISPATCHER
  254. The dispatcher of the Math component is shown in its entirety below. Notice that the dispatcher executes its component functions indirectly by calling one of two Component Manager utility functions — CallComponentFunction or CallComponentFunctionWithStorage. You use CallComponentFunction when your component function needs only the fields in the ComponentParameters structure, and CallComponentFunctionWithStorage when it also needs access to the private storage that was allocated in your component’s open function. 
  255. pascal ComponentResult main (ComponentParameters *params,
  256.                                             Handle storage)
  257. {
  258.     // This routine is the main dispatcher for the Math component.
  259.     ComponentResult result = noErr;
  260.     
  261.     // Did we get a Component Manager request code (< 0)?
  262.     if (params->what < 0) {
  263.         switch (params->what)
  264.         {
  265.             case kComponentOpenSelect:            // Open request
  266.                 result = CallComponentFunctionWithStorage (storage, params,
  267.                                 (ComponentFunction) _MathOpen);
  268.                 break;
  269.             case kComponentCloseSelect:            // Close request
  270.                 result = CallComponentFunctionWithStorage (storage, params,
  271.                                 (ComponentFunction) _MathClose);
  272.                 break;
  273.             case kComponentCanDoSelect:            // Can do request
  274.                 result = CallComponentFunction (params,
  275.                                 ComponentFunction) _MathCanDo);
  276.                 break;
  277.             case kComponentVersionSelect:        // Version request
  278.                 result = CallComponentFunction (params,
  279.                                 (ComponentFunction) _MathVersion);
  280.                 break;
  281.             case kComponentTargetSelect:            // Target request
  282.                 result = CallComponentFunctionWithStorage (storage, params,
  283.                                 (ComponentFunction) _MathTarget);
  284.                 break;
  285.             case kComponentRegisterSelect:        // Register request not                                                                 // supported
  286.             default:                                    // Unknown request
  287.                 result = paramErr;
  288.                 break;
  289.         }
  290.     }
  291.     else {                                                // One of our request codes?
  292.         switch (params->what)
  293.         {
  294.             case kDoDivideSelect:                    // Divide request
  295.                 result = CallComponentFunction (params, 
  296.                                 (ComponentFunction) _MathDoDivide);
  297.                 break;
  298.             case kDoMultiplySelect:                // Multiply request
  299.                 result = CallComponentFunction (params,
  300.                                 (ComponentFunction) _MathDoMultiply);
  301.                 break;
  302.             default:                                    // Unknown request
  303.                 result = paramErr;
  304.                 break;
  305.         }
  306.     }
  307.     return (result);
  308. }
  309. A drawback of the dispatcher is the overhead incurred in having the Component Manager functions mediate all your requests. To reduce your calling overhead and thus improve performance, you can use a fast dispatch technique. While this technique is used in most of the QuickTime 1.0 components, this is the first time that it’s been publicly described. See “Fast Component Dispatch” for details. 
  310. THE MATH COMPONENT DODIVIDE CALL 
  311. For the Math component, the DoDivide function is declared as follows:
  312. pascal ComponentResult _MathDoDivide (short numerator, short denominator,
  313.                                                          short* quotient)
  314. {
  315.     ComponentResult result = noErr;
  316.     
  317.     if (denominator != 0) {
  318.         *quotient = numerator/denominator;
  319.     } 
  320.     else {
  321.         *quotient = 0;
  322.         result = -1L;    // Divide by zero not allowed
  323.     }
  324.     return (result);
  325. }
  326. The key thing to note here is that component functions must always return a result code. The return value is 32 bits and is defined in the API for the component. In our case, a value of 0 (noErr) indicates successful completion of the call and a negative value indicates that an abnormal completion occurred. Note that for some components a negative result code could indicate that the returned parameter values should be interpreted in a particular manner. For example, a video digitizer may return a negative result code of notExactSize from the VDSetDestination call. This doesn’t indicate an error. It just means that the requested size wasn’t available on the digitizer and that the next closest size was given instead. Also, since this result code is 
  327. FAST COMPONENT DISPATCH 
  328. BY MARK KRUEGER     
  329. If you’re concerned about the time it takes to dispatch calls made to your component, try the fast dispatch method. This method eliminates the need for your component to make the extra call to the Component Manager functions CallComponentFunction and CallComponentFunctionWithStorage, and allows control to pass directly back to the caller. It does this by calling your component entry point with the call’s parameters, the instance storage, and the caller’s return address already on the stack. It passes the component request code in register D0, and points register A0 at the stack location where the instance storage is kept. 
  330. To handle a fast dispatch, you must write your component entry point in assembly language. Use the request code in D0 as an index into a table of function 
  331.     addresses, paying special attention to the negative request codes used for the standard Component Manager calls like OpenComponent and CloseComponent. If the functions are defined correctly, the dispatcher can jump directly to the function address. Note that the function parameter the caller uses to specify the component instance will instead be a handle to your component instance storage. When the function completes, control will return to the calling application. 
  332. You need to tell the Component Manager that your component has a fast dispatch handler instead of a normal dispatcher. To do this, set bit 30 ($40000000) of the componentFlags field of your component resource, and the Component Manager will always call your component using the fast dispatch method.    
  333. 32 bits, you could actually return pointers or handles as results, rather than error codes.
  334. USING THE MATH COMPONENT
  335. In this section, we look at how an application uses the Math component. First, the application has to ask the Component Manager to locate the Math component. If the Math component is found, the application can open it and make calls to it.
  336. FINDING AND OPENING THE MATH COMPONENT
  337. We tell the Component Manager which component we’re looking for by sending it a ComponentDescription record containing the type, subtype, and manufacturer codes for the desired component. We then call the Component Manager routine FindNextComponent to locate a registered component that fits the description. The code fragment below shows how this looks. 
  338. ComponentDescription        mathDesc;
  339. Component                         mathComponentID;
  340. // Math component description
  341. mathDesc.componentType = mathComponentType;
  342. mathDesc.componentSubType = 0L;                    // Wild card
  343.  
  344. mathDesc.componentManufacturer = 'appl';
  345. mathDesc.componentFlags = 0L;                    // Wild card
  346. mathDesc.componentFlagsMask = 0L;                // Wild card
  347.  
  348. // Find a Math component
  349. mathComponentID = FindNextComponent (nil, &mathDesc);
  350. The zeros in the componentSubType, componentFlags, and componentFlagsMask fields indicate that they function as wild cards. If the Component Manager was unable to locate a component matching the description, it returns zero. 
  351. Assuming the Component Manager returned a nonzero component ID, we now open the component using the OpenComponent call, as follows: 
  352. mathInstance = OpenComponent (mathComponentID);
  353. OpenComponent returns a unique connection reference — a component instance — to the Math component. If the component instance is nonzero, we’re ready to use the component. Figure 5 illustrates the process of finding a component. 
  354. Figure 5
  355. How Applications Find Components
  356.  
  357. MAKING CALLS TO THE MATH COMPONENT
  358. The Math component performs only two functions, dividing and multiplying two integers. To ask it to divide two numbers for us, we just call the component function DoDivide with the component instance value we got by opening the Math component. 
  359. result = DoDivide (mathInstance, numerator, denominator, "ient);
  360. When we’re done with the component, we close the connection with the CloseComponent call, like this: 
  361. result = CloseComponent (mathInstance);
  362. That’s all there is to it. You can see that making component function calls is much like making any other kind of call.
  363. EXTENDING EXISTING COMPONENTS
  364. After defining the basic functionality for your component, you may find that you want to extend it beyond what you originally specified in your component API. There are three ways to extend the functionality of existing components:
  365. •    Use the subtype and/or manufacturer fields of the component description to indicate to a client application that a specific component implementation provides previously undefined functionality.
  366. •    Revise the component API to add calls that weren’t specified in the original interface.
  367. •     Modify the behavior of a particular component implementation by capturing it and overriding a specific function.
  368. The following sections examine these methods in detail.
  369. ADDING NEW FUNCTIONALITY TO A SPECIFIC COMPONENT IMPLEMENTATION 
  370. Let’s add some more functionality to the Math component. The MoMath component extends the Math component by adding an addition function. A new function prototype is added for the new function in MoMathComponent.h, along with a new request code, kDoAddSelect.
  371. pascal ComponentResult DoAdd (MathComponent mathInstance, short firstNum,
  372.     short secondNum, short* result) = ComponentCallNow (kDoAddSelect, 
  373.     0x08);
  374.  
  375. Request codes for implementation-specific functions must have an ID of 256 or greater. This is required to differentiate these functions from those that are generally defined in the API for the component type. Implementation-specific functions usually provide capabilities beyond those specified in the component API, and thus offer developers a way to differentiate their component implementations from those of competing developers. The following code fragment from the MoMath component dispatcher shows support for the DoAdd function: 
  376. case kDoAddSelect:            // Add function
  377. {
  378.     result = CallComponentFunction (params, 
  379.                     (ComponentFunction) _MoMathDoAdd);
  380.     break;
  381. }
  382. How does the calling application know that a superset of the Math component is around? To start with, the caller needs to know that such a beast even exists. Remember, this is an extension of a component implementation by a particular vendor, not of the component type in general. In this case, the extended component is differentiated from its basic implementation by its manufacturer code. Both Math and MoMath have the same component type ('math'), but their manufacturer codes differ ('appl' for Math and 'gwck' for MoMath). Note that the subtype field can be used in a similar manner, but it’s typically used to distinguish algorithmic variations of a general component type. For example, image compressor components ('imco') use the subtype field to differentiate various types of compression algorithms ('rle ' for run length encoding, 'jpeg' for JPEG, and so on). The manufacturer field is used to identify vendor-specific implementations of a particular compression algorithm.
  383. If the application is aware that this extended component exists, it can use the information stored in the component’s 'thng' resource to locate and open it. Once the component has been opened, the application calls the extended function just as it would any other component function. 
  384. ADDING NEW FUNCTIONALITY TO A COMPONENT TYPE
  385. In the preceding example, we used the manufacturer code to hook in new functionality to the Math component; this allowed a specific implementation to extend the interface. In reality, we would be better off extending the component by defining a change to the Math component API, so that all components of this type would have an interface defined for the new addition function. Of course, this is an option only when you’re the owner of the component API. Changing component APIs that are owned by others (for instance, by Apple) is a good way to break applications, and no one appreciates that, least of all your users.
  386. If you’re going to take this route, be sure that the existing API is left unchanged, so that clients using the old component’s API can use your new component without having to be modified. In addition, it’s important to update the interface revision level of components that implement the new API, so that clients can determine whether a particular component implementation supports the new API.
  387. MODIFYING EXISTING FUNCTIONALITY
  388. Modifying existing functionality is a little more complicated than adding functionality to a component type. In the example component, the DoDivide function divides two 16-bit integers, truncating the result. We would actually get a better answer if the result were rounded to the nearest integer. We don’t need to add a new call to do this, since what we really want to do is replace the implementation of the existing call with a more accurate version. On the other hand, the Math component does an acceptable job of multiplying two integers, so we don’t need to override that function. Instead, we’ll use the multiply function that’s already implemented. 
  389. We can do this by writing a component that does the following:
  390. •    captures the original Math component 
  391. •     overrides the original DoDivide function with a more accurate division function
  392. •     delegates the DoMultiply function to the original Math component 
  393. Let’s start by writing a new component — in the example code, it’s called NuMathComponent — that contains a dispatcher, as well as functions to handle the Component Manager request codes and the new DoDivide routine. We use a register routine to check for the availability of a Math component before we allow the NuMath component to be registered. If no Math component is available, obviously we can’t capture it, and we shouldn’t register. We also set cmpWantsRegisterMessage (bit 31) in the componentFlags field of the ComponentDescription record in the NuMath component’s 'thng' resource to let the Component Manager know that we want a chance to check our environment before we’re registered. With this flag set, the sequence of requests that NuMath will get at registration time will be open, register, and close. 
  394. The NuMath component register routine is as follows:
  395. pascal ComponentResult _NuMathRegister (void)
  396. {
  397.     // See if a Math component is registered. If not, don't register
  398.     // this component, since it can't work without the Math component.
  399.     // We return 0 to register, 1 to not register.
  400.  
  401.     ComponentDescription    mathDesc;
  402.     
  403.  
  404.     mathDesc.componentType = mathComponentType;
  405.     mathDesc.componentSubType = 0L;                // Wild card
  406.     mathDesc.componentManufacturer = 'appl';
  407.     mathDesc.componentFlags = 0L;                // Wild card
  408.     mathDesc.componentFlagsMask = 0L;            // Wild card
  409.     
  410.     return ((FindNextComponent (nil, &mathDesc) != 0L) ? 0L : 1L);
  411. }
  412. Our open routine opens an instance of the Math component normally, and then uses the ComponentFunctionImplemented routine to determine whether the component we want to capture supports the target request code. We then capture the Math component with the CaptureComponent call. 
  413. if (ComponentFunctionImplemented ((ComponentInstance) mathComponentID,
  414.         kComponentTargetSelect)) {    
  415.     mathComponentID = CaptureComponent (mathComponentID, (Component) self);
  416. }
  417. The original Math component ID is now effectively removed from the Component Manager’s registration list. This means that the Math component is now hidden from all other clients, except those that already had a connection open to it before it was captured.
  418. We then open an instance of the Math component, and use the ComponentSetTarget utility (defined in MathComponent.h) to inform Math that it’s been captured by NuMath. 
  419. result = ComponentSetTarget (mathInstance, self);
  420. Why does a component need to know that it’s been captured? If a captured component makes use of its own functions, it needs to call through the capturing component instead of through itself, because the capturing component may be overriding one of the calls that the captured component is using. A captured component does this by keeping track of the component instance that the ComponentSetTarget call passed to it and by using that instance to make calls to the capturing component.
  421. When the NuMath Component receives a divide request code, we dispatch to the new DoDivide function, effectively overriding the DoDivide function that was implemented in the Math component. However, when we receive a multiply request code, we delegate this to the captured Math component, since we aren’t overriding the multiply function. We do this by simply making a DoMultiply call to the Math component, passing in the parameters that the NuMath component was provided with. 
  422.  
  423. result = DoMultiply (mathInstance, firstNum, secondNum,
  424.                                  multiplicationResult);
  425. In the close routine of the NuMath component, we remember to close the instance of the Math component we were using, and also to uncapture it so that we restore the system to its original state. 
  426. result = CloseComponent (mathInstance);
  427. result = UncaptureComponent (mathComponentID);
  428. THAT WASN’T SO BAD, WAS IT?
  429. As you can see, adding new functionality is no big deal. As always, however, you should notify developers who may use your component of any late-breaking interface changes. You want to be sure that everyone’s writing code that conforms to your most recent component specification. 
  430. ELEVEN COMMON MISTAKES
  431. You may encounter some pitfalls during the development of your component. Here we discuss 11 common mistakes that we’ve either made personally or observed other developers make. We hope that you’ll learn from our own fumblings and save yourself time and frustration.
  432. Allocating space at registration time. Generally, it’s best if your component allocates its storage only when it’s about to be asked to do something — that is, when it has received a kOpenComponentSelect request code. This way, memory isn’t tied up unnecessarily. Remember, your component may never be called during a given session, and if it’s not, it shouldn’t hang out sucking up memory some other process might be able to use.
  433. Allocating space in the system heap. The system heap shouldn’t be your first choice as a place to put your component globals. The system heap is generally reserved for system-wide resources (big surprise), and most components fall into the category of application resources that needn’t be resident at all times. Consider carefully whether you need to scarf up system space. In addition, if your component is registered in an application heap, you should never try to allocate space in the system heap. The fact that you’re registered in an application heap probably indicates that there isn’t any more space in the system heap for you to grab.
  434. Not supporting the kComponentVersionSelect request code. This is a pretty nasty omission for several reasons. First, this is the easiest request code to implement; it takes only a single line of code! What are you, lazy? (Don’t answer that.) Second, clients may use the API version level to keep track of extended functionality — it may be that version 2 of a component interface contains additional calls over version 1, and a client certainly has reason to want to know that. Third, clients may use the 
  435. component version to determine, for example, whether the component in question contains a recent bug fix.
  436. Incorrectly calculating the parameter size for your component function prototype. If you do this, you’ll probably notice it right after calling the offending component function, since your stack will be messed up by however many bytes you failed to calculate correctly. A common instance of this error occurs when calculating the space required by a function call that has char or Boolean parameters. Under certain circumstances, Boolean and char types are padded to two bytes when passed as function parameters. 
  437. To illustrate, we’ll look at two example declarations. How many bytes of stack space need to be reserved for the parameters of the following function?
  438. pascal ComponentResult I2CSendMessage (ComponentInstance ti, 
  439.     unsigned char slaveAddr, unsigned char *dataBuf, short byteCount)
  440. The correct answer is eight bytes. The slaveAddr parameter is promoted to two bytes, the dataBuf pointer takes four bytes, and the byteCount takes two bytes. The rest of the declaration then takes the following form: 
  441.     = ComponentCallNow (kI2CSendMessageSelect, 0x08);
  442. Let’s look at the next example. How many bytes of stack space does this function require?
  443. pascal ComponentResult MyFunction (ComponentInstance ti,
  444.      Boolean aBoolean, char aChar, short *aPointer)
  445. The correct answer is six bytes. The aBoolean parameter takes one byte, the aChar parameter takes one byte, and the aPointer parameter takes four bytes. What’s that? Didn’t we just say that Boolean and char parameters got padded to two bytes? We certainly did, but these types get padded only when an odd number of char or Boolean parameters occurs consecutively in the declaration. Because we could add one byte for the Boolean to the one byte for the char following it, we didn’t need to do any padding — the total number of bytes was even (two bytes), and that’s what’s important. In the first example, this didn’t work. We added one byte for the char to the four bytes for the pointer following it, and got five bytes, and so we needed to pad the char parameter by one byte. The rest of the declaration for the second example is 
  446.     = ComponentCallNow (kMyFunctionSelect, 0x06);
  447. Registering your component when its required hardware isn’t available. If your component doesn’t depend on specific hardware functionality, don’t worry about this. If it does (as, for example, video digitizers do), make sure you check for your hardware before you register your component. The Component Manager provides a flag, cmpWantsRegisterMessage, that you can set in the componentFlags field of your component description record to inform the Component Manager that your component wants to be called before it’s registered. This gives your component an opportunity to check for its associated hardware, and to decline registration if the hardware isn’t available.
  448. Creating multiple instances in response to OpenComponent calls when your component doesn’t support multiple instances. Only you can know whether your component can be opened multiple times. For instance, the Math component is capable of being opened as many times as memory allows (although our sample code restricts the number of open instances to three for the sake of illustration). Normally, a component that controls a single hardware resource should be opened only once and should fail on subsequent open requests. This will prevent clients from oversubscribing your component. Not performing requisite housekeeping in response to a CloseComponent call. Bad things will happen, especially if you have hierarchies of components! As part of your close routine, remember to dispose of your private global storage and to close any drivers, components, files, and so on that you no longer need. 
  449. Allowing multiple instances from a single registration of a hardware component instead of allowing a single instance from each of multiple registrations. While this isn’t really a common mistake today, we want to emphasize that there’s a big difference between designing your component to allow multiple instances versus registering the component multiple times and allowing each registered component to open only once. In the case of a generic software library element (like Math), there’s no problem with multiple instances being opened. In the case of a hardware resource that’s being controlled with a component, it’s almost always preferable to register the component once for every resource that’s available (four widget cards would result in four different registrations rather than one registration that can be opened four times). 
  450. Why does it matter? Consider an application whose sole purpose in life is to manage components that control hardware resources. It may be selecting which resource to use, which one to configure, or which one to pipe into another. It’s much more natural to ask the Component Manager to provide a list of all components of a certain type than it is to open each component that fits the criteria n times (until it returns an open error) in order to determine how many are available. 
  451. To kill a dead horse, suppose we have three identical video digitizers, and we want to convey that information to the user via a menu list. If all are registered separately, we can easily determine how many video digitizers are available (without even opening them) by using the FindNextComponent call. If only one were registered, the list presented to the user would only be a partial list. Take the blind leap of faith: register duplicate hardware resources! 
  452. As a final note, if you’re registering a single component multiple times, be sure that the component name is unique for each registration. This allows users to distinguish between available components (as in the menu example in the previous paragraph), and it also helps you avoid the next gotcha.
  453. Always counting on your component refCon being preserved. We know this may be upsetting to many of you, but there exists a situation in which your component refCon may not be valid. A component refCon (similar to a dialog, window, or control refCon) is a 4-byte value that a component or client can use for any purpose. It’s accessed through a pair of Component Manager calls, GetComponentRefcon and SetComponentRefcon. Component refCons are frequently used to hold useful information such as device IDs or other shared global data, and so can be quite critical to a component. We can hear you now . . . “What? You’re going to nuke my global data reference?!” Well, not exactly — it’s just not as immediately accessible as you would like it to be. Don’t worry, it’s possible to detect when your component is in this situation and retrieve the refCon from it, as long as you follow a few simple steps. 
  454. The situation in question arises when there’s not enough room in the system heap to open a registered component. This happens when you run an application (that uses your component) in a partition space so large that all free memory is reserved by the application. This will prevent the system heap from being able to grow. When the application calls OpenComponent, the component may be unable to open in the system heap because there’s no available space. In this case, the Component Manager will clone the component. When a component is cloned, a new registration of the component is created in the caller’s heap, and the component ID of the cloned component is returned to the caller, not the component ID of the original registration. The clone is very nearly a perfect copy, but like the Dopplegänger Captain Kirk in the Star Trek episode “What Are Little Girls Made Of?” it’s missing something crucial. 
  455. That something is the component refCon. The refCon isn’t preserved in the clone, so if your component needs the refCon to perform properly, it must be recovered from the original component. How you go about doing this is a bit tricky. We assume that you followed our advice and made sure that your component registered itself with a unique name. (This technique is not guaranteed to work properly unless this constraint is satisfied — you’ll see why shortly.)
  456. The first problem is detecting whether your component has been cloned at open time. You can determine this by examining your component’s A5 world using the GetComponentInstanceA5 routine. If the A5 world is nonzero, you’ve been cloned. But wait, you say, what if I registered my component locally? Won’t it have a valid A5 value? Yep, it sure will, but if it was registered locally, we won’t have this nasty situation to begin with, since the component won’t be in the system heap anyway. 
  457. Now you know that you’ve been cloned, and that you can’t depend on your refCon. How do you retrieve it? Well, we know that there are two registrations of the same component in the Component Manager registration list (the original and the clone). So all we have to do is to set up a component description for our component, and then use FindNextComponent to iterate through all registrations of it. We know what our current component description and ID are, so we can just examine the component description and ID for each component returned. Once we find a component whose ID is different from ours but whose description is identical, we’ve found the original component registration. We can then make a call to GetComponentRefcon to obtain the original refCon value, and then set the clone’s refCon appropriately. Whew! 
  458. This technique won’t work with a component that registers multiple times and doesn’t register each time with a unique name. If component X, capable of multiple registrations, always registers with the name “X,” then when we try to find the original component from the clone, there will be multiple components named “X” in the registration list, and we’ll be unable to determine which component is the one we were cloned from.
  459. Omitting the “pascal” keyword from declarations for your component dispatcher or for any functions that are called by CallComponentFunction or CallComponentFunctionWithStorage. This bug will only antagonize those developers who are working in C. As many of you know, the Macintosh system software was originally written in Pascal, and functions that are called by Toolbox routines (in this case, by the Component Manager) must conform to Pascal calling conventions. If you fail to include this keyword where necessary, the parameters for your function will be interpreted in the reverse order from what you intended, and your component may enter the Twilight Zone, perhaps never to return. 
  460. Trying to read resources from your component file when its resource fork isn’t open. When one of your component functions is called, the current resource file (as obtained from CurResFile) is not the component’s resource file unless you explicitly make it so. If you need to access resources that are stored in your component file, you must first call OpenComponentResFile to get an access path, and then call UseResFile with that path. When you’re done with the file, restore 
  461. the current resource file and call CloseComponentResFile to close your component file. 
  462. DEBUGGING TOOLS AND TECHNIQUES
  463. Debugging components can be frustrating if all you have to work with is MacsBug. Fortunately, there are a few tricks and tools that give you a little more power to terminate those pesky bugs. In this section, we’ll show you how to debug your component code with a symbolic debugger, and then we’ll examine three utilities that will help you test your component.
  464. SYMBOLIC DEBUGGING
  465. Let’s suppose that we’ve got the Math component up and running, but something funny is happening in our DoDivide routine. It would be nice to be able to step through the component code symbolically and see what’s happening. Fortunately, there’s a simple trick that involves registering our component in such a way that it can be symbolically debugged.
  466. For the purposes of the example, we’ll discuss how to do this with Symantec’s THINK C development system. The first step is to add the component source code to the application source code project. Then we modify the application code so that instead of using the FindNextComponent call to locate the Math component, we register it ourselves using the RegisterComponent call.
  467. #define kRegisterLocally 0 
  468. mathComponentID = RegisterComponent (&mathDesc,
  469.     (ComponentRoutine) MathDispatcher, kRegisterLocally, nil, nil, nil);
  470. Note that when you register a component in an application heap as we’re doing, you must register it locally, or your system may die a horrible death after your application quits and its application heap goes away.
  471. The component description, mathDesc, is set up just as before. The second parameter is the main entry point (the dispatcher) to the Math component. The Component Manager will call this routine every time it receives a request code for an instance of the Math component. 
  472. In the Math component code, we set up a debug compiler flag (DEBUG_IT, found in DebugFlags.h) which, if defined, indicates whether we want to declare our component dispatcher as a main entry point for a standalone code resource or as just another routine linked into our application program.
  473. #ifdef DEBUG_IT
  474.     // Use this declaration when we're running linked.
  475.     pascal ComponentResult MathDispatcher (ComponentParameters *params,
  476.                                                             Handle storage)
  477. #else
  478.     // Use this declaration when we're building a standalone component.
  479.     pascal ComponentResult main (ComponentParameters *params,
  480.                                                 Handle storage)
  481. #endif DEBUG_IT
  482. The two declarations differ only in that one is declared as a main and one isn’t. (Remember, with both the source for the component and the application in the same project, we can’t have two mains.) Now, each time the Component Manager sends a request code to the Math component, it’s calling a component routine linked into the application (MathDispatcher) that we can trace with the debugger. When we’ve finished debugging the component, we can undefine the debug flag and rebuild the component as a standalone code resource. The test application will now use FindNextComponent to access the standalone component. 
  483. THE THING MACSBUG DCMD 
  484. The thing dcmd is included on the QuickTime 1.0 Developer’s CD. To use this dcmd, simply use ResEdit to copy the 'thng' dcmd resource into a file named Debugger Prefs, and put this file into your System Folder. Once in MacsBug, the dcmd is invoked by entering “thing”. A sample thing display is shown in Figure 6.
  485.  Displaying Registered Components
  486.   Cnt tRef#  ThingName      Type SubT Manu Flags    EntryPnt FileName Prnt LocalA5  RefCon
  487.    #0 010005 Movie Grabber  barg •••• appl 40000000 00000000 QuickTi…      00000000 00000000
  488.    #0 010007 Preview Loader blob •••• appl 00000000 00000000 QuickTi…      00000000 00000000
  489.    #0 01000c Apple Microse… clok micr appl 40000003 00000000 QuickTi…      00000000 00000000
  490.    #0 01000d Apple Tick Cl… clok tick appl 40000001 00000000 QuickTi…      00000000 00000000
  491.    #0 01000e Apple Alias D… dhlr alis appl 40000000 00000000 QuickTi…      00000000 00000000
  492.    #0 010018 Apple Photo -… imco jpeg appl 40600028 00000000 QuickTi…      00000000 00000000
  493.    #0 010014 Apple None     imco raw  appl 4060003f 00000000 QuickTi…      00000000 00000000
  494.    #0 01001c Apple Animati… imco rle  appl 4060043f 00000000 QuickTi…      00000000 00000000
  495.    #0 010016 Apple Video    imco rpza appl 40200438 00000000 QuickTi…      00000000 00000000
  496.    #0 01001a Apple Graphics imco smc  appl 40600408 00000000 QuickTi…      00000000 00000000
  497.    #0 010012                imdc SIVQ appl 00000030 00000000 QuickTi…      00000000 00000000
  498.    #0 010017 Apple Photo -… imdc jpeg appl 40400028 00000000 QuickTi…      00000000 00000000
  499.    #0 010013 Apple None     imdc raw  appl 40400bff 00000000 QuickTi…      00000000 00000000
  500.    #0 01001b Apple Animati… imdc rle  appl 40400c7f 00000000 QuickTi…      00000000 00000000
  501.    #0 010015 Apple Video    imdc rpza appl 40000878 00000000 QuickTi…      00000000 00000000
  502.    #0 010019 Apple Graphics imdc smc  appl 40400438 00000000 QuickTi…      00000000 00000000
  503.    #0 ..000b                jimB jph  leak 00000000 00000000 QuickTi…      00000000 00000000
  504.    #1 010002 NuMath Compon… math      appl 80000000 001a9b80 NuMath …      00000000 00000000
  505.       820000                               0000                            00000000 01263af8
  506.    #1 ..0000 Math Component math      appl 00000000 001a9f80 Math Co…      00000000 00000000
  507.       840001                               0000                            00000000 01263b08
  508.    #0 010001 MoMath Compon… math      gwck 00000000 00000000 MoMath …      00000000 00000000
  509.    #0 010011 Apple Standar… mhlr mhlr appl 40000000 00000000 QuickTi…      00000000 00000000
  510.    #0 01000f Apple Sound M… mhlr soun appl 40000000 00000000 QuickTi…      00000000 00000000
  511.    #0 010010 Apple Video M… mhlr vide appl 40000000 00000000 QuickTi…      00000000 00000000
  512.    #0 010006 Movie Control… play •••• appl 40000000 00000000 QuickTi…      00000000 00000000
  513.    #0 010009 Movie Preview… pmak MooV appl 00000000 00000000 QuickTi…      00000000 00000000
  514.    #0 010008 Pict Preview … pmak PICT appl 00000000 00000000 QuickTi…      00000000 00000000
  515.    #0 01000a Picture Previ… pnot PICT appl 00000000 00000000 QuickTi…      00000000 00000000
  516.    #0 010003 Movie Grabber… sgch soun appl 40000000 00000000 QuickTi…      00000000 00000000
  517.    #0 010004 Movie Grabber… sgch vide appl 40000000 00000000 QuickTi…      00000000 00000000
  518.   #32 Thing Table entries, #29 in use.      #32 Instance Table entries, #2 in use.
  519.    #5  File Table entries, #4  in use.
  520.    Thing Modification Seed #33.            Codec Manager 000dad3c
  521. Figure 6
  522. Sample thing MacsBug Display
  523. The Cnt field indicates the number of instances of a particular component. 
  524. The tRef# field shows the component ID that the Component Manager has assigned to a particular component; this is the value that’s returned to your application by the FindNextComponent call. If there are instances of a component open, the component instances are listed below the component ID in the tRef# field. Note that the tRef# for the Math component is ..0000. The two dots at the beginning indicate that this component has been captured. (We know from the earlier discussion of the NuMath component that it has captured the Math component.)
  525. The ThingName field displays the name of a particular component. This is either the string that’s pointed to by the component’s 'thng' resource or the name that it was registered with by a call to RegisterComponent. 
  526. The Type, SubT, Manu, and Flags fields likewise correspond either to the information that’s stored in the component’s 'thng' resource or to the codes and flags that were supplied to a call to RegisterComponent.
  527. The EntryPnt field is the main entry point of the component code. 
  528. The FileName field indicates what file the component’s 'thng' resource resides in. This field is empty for components registered without a component resource.
  529. The Prnt field displays the parent of a cloned component. This information isn’t available through the Component Manager API. 
  530. The LocalA5 field shows the A5 world that the component is associated with; unless the component is cloned or registered locally, this value is 0. 
  531. The RefCon field is the value of the component’s refCon.
  532. At the bottom of the display there’s a decimal number indicating the number of component (thing) entries allocated in the Component Manager registration list, along with the number of entries actually in use. Similar information is given for the number of file table entries. Finally, the Component Manager modification seed is listed. 
  533. THINGS! CONTROL PANEL 
  534. The Things! control panel, included on the QuickTime 1.0 Developer’s CD, is similar to the thing dcmd but provides several additional capabilities. These include displays of version levels, info and name strings, and resource information, as well as controls to reorder the component search chain and to unregister components.
  535. Figure 7 shows a sample display of the Things! control panel.
  536. Figure 7
  537. Things! Control Panel Main Display
  538. The list on the left in the top panel shows the types of components currently registered with the Component Manager; the list on the right shows the components of the selected type that are currently registered. The latest version of Things! doesn’t display components that aren’t registered globally or that aren’t registered in the same application heap as the control panel is operating in. Things! also doesn’t show components that aren’t resource-based.
  539. The middle panel shows the name of the currently selected component and a description of its type, subtype, and manufacturer fields. The number of instances of the type of component selected (in the example, the 'imco', or image compressor, component type) is displayed at the bottom of this panel. Clicking this field will toggle it to display the number of instances of the selected component (in this case, the Apple Video image compressor component).
  540. The bottom panel shows an information string that usually describes what the component does. At the upper left in this panel are two arrow buttons that can be used for paging the bottom panel (the top and middle panels don’t change).
  541. Figure 8 shows a variation of the bottom panel’s second page. The component version information is displayed at the top. The “Set default” button allows you to assign a particular component as the first component in the Component Manager’s search chain for that component type. 
  542.  
  543.  
  544. Figure 8
  545. Things! Page 2 Display
  546. If the Option key is held down while paging to the second page, a Destroy button is displayed (as shown in Figure 9). Clicking this button will unconditionally unregister the currently selected component. 
  547. Figure 9
  548. Things! Extended Page 2 Display
  549. The third page shows the flags and mask fields of the component. 
  550. The fourth page displays a variety of information about the 'thng' resource associated with a particular component, including the resource name and ID as well as its attributes. 
  551. Page 5 presents a summary of the system software configuration. 
  552. REINSTALLER 
  553. Reinstaller is a utility that lets you install resource-based components without restarting your Macintosh. Launching the application presents a Standard File dialog asking you to choose the file containing the component you want to register. Clicking the Open button will dismiss the dialog and register the selected component with the Component Manager.
  554. The same component file can be installed multiple times. Duplicate components aren’t removed; the most recently installed version of a component becomes the default component for that type. Note that any components installed with Reinstaller are installed only until shutdown or reboot.
  555. This utility is quite handy in conjunction with the Things! control panel’s Destroy button. Between the two of them, you can easily register and unregister your components without having to restart your Macintosh. 
  556. GO DO YOUR OWN “THING”
  557. Now you know how easy it is to write your own components. You’ve learned how to declare your own component API and how to implement a component dispatcher for it. You’ve seen what common pitfalls to avoid and how to symbolically debug your component to help you get around new pitfalls we haven’t thought of. 
  558. We’re confident that once you start programming components, you’ll become addicted! So what are you hanging around here for? Get busy writing, and start amazing your users (and us, too) with some way cool components. We’re waiting . . . 
  559. REQUIRED READING
  560. •    QuickTime Developer’s Guide (part of the QuickTime Developer’s Kit v. 1.0, ADPA #R0147LL/A). Currently the essential reference for programming with the Component Manager. This documentation will be replaced in the near future by three new Inside Macintosh volumes: QuickTime, QuickTime Components, and More Macintosh Toolbox. (The Component Manager will be documented in the latter volume.)
  561. •    “QuickTime 1.0: ‘You Oughta Be in Pictures,’” Guillermo A. Ortiz, develop  Issue 7. An overview of QuickTime, including the Component Manager. 
  562. BE OUR GUEST 
  563.     COMPONENTS AND C++ CLASSES COMPARED 
  564.     
  565. DAVID VAN BRINK 
  566. If you’re familiar with C++ classes but new to thinking about components, you may find it instructive to know how the two compare. Although each has its own niche in Macintosh software development, components and C++ classes have many features in common. 
  567. In general, both components and C++ classes encourage a building-block approach to solving complex problems. But whereas a component is separate from any application that uses it, a class exists only within the application that uses it. Components are intended to add systemwide functionality, while classes are intended to promote a modular approach to developing a program.
  568. We can also compare components and C++ classes in terms of how they’re declared and called, their use of data hiding and inheritance, and their implementation. But first, let’s briefly review what a class is and what a component is.
  569. SOME BASIC DEFINITIONS
  570. A class, in the programming language C++, is a description of a data structure and the operations (methods) that can be performed on it. An instance of a class is known as an object. Classes are provided in C++ to promote an “object-oriented programming style.” By grouping a data type and its methods together, classes enable programmers to take a modular approach to developing a program. 
  571.     A component, as described in the preceding article (“Techniques for Writing and Debugging Components”), is a single routine that accepts as arguments a selector and a parameter block. The selector specifies which of several (or many) operations to perform, and the parameter block contains the arguments necessary for that operation. Components are “registered” with the Component Manager and can be made available to either the program that registered the component or to any program that’s executed, making it possible to add systemwide functionality. For instance, if Joe’s Graphics Corporation develops a new image compression technique, it can be sold to users as a component. Users install the component simply by dragging an icon into a folder, and that form of image compression is then automatically available to all programs that make use of graphics. 
  572. DECLARING CLASSES AND COMPONENTS 
  573. A C++ class is declared in much the same way as a struct, with the addition of routines that operate only on the structure described. Once the class is declared, instances can be declared in exactly the same way as other variables. That is, to create an instance of a class, you either declare a variable of that class or dynamically allocate (and later deallocate) a variable of that class. 
  574. A component must be registered with the Component Manager. At that time, its type, subtype, manufacturer, and name are specified. The type, subtype, and manufacturer are long integers; the name is a string.
  575. Component instances can only be created dynamically, using specific Component Manager routines. To create an instance of a component that has been registered, a program must first find the component. If the seeking program is the same one that registered the component, it already has the component. If not, it can make Component Manager calls to search for all available components with a given type, subtype, and manufacturer; any part of the description can be a wild card. 
  576. Once a component has been found, it must be opened, and this operation produces a reference to the    
  577.  
  578. component instance. Operations can be performed on the component instance using this reference. 
  579. Table 1 compares how classes and components are declared and how instances of each are created. (Note that for components, the code is idealized.) 
  580. CALLING ALL ROUTINES
  581. Calling a routine that operates on a C++ object is slightly different from making a standard routine call: the call more closely resembles a reference to an internal field of a struct. The routine that gets called is identical to any other routine, except that it’s declared within the class definition rather than at the same brace level as the main routine.
  582. Calling a component routine is identical to calling any other routine. The first argument is always the component instance, and other arguments may optionally follow. The return type of every component routine is a long integer, and part of the numerical range is reserved for error messages from either the component or the component dispatch mechanism. 
  583. The Component Manager lets a program issue calls to a component that it has never “met” before. This form of dynamic linking is crude, because no type checking is performed.
  584. Table 1 compares how classes and components are called.
  585. DATA HIDING 
  586. A C++ class can have “private” fields and methods, which are accessible by class methods but not by the caller. The programmer can see these private parts simply by perusing the class declaration. If a change to the implementation of a class requires that the private parts be changed, relinking with the implementation of the class won’t be sufficient: all clients must be recompiled, since the positions of public fields might have changed. (One tricky way around this is to include a private field of type char * that’s really a pointer to the class’s internal state data. The class constructor 
  587.     allocates memory for whatever internal state it likes and coerces a pointer to it to live in that char * field. This technique is useful for object-only software library distribution and also protects proprietary algorithms from curious programmers.)
  588. A component is responsible for allocating memory for its internal state (the component’s “globals”) when it’s opened and releasing that memory when it’s closed. There are both component globals and component instance globals. These correspond to static and automatic variables in a C++ class and have similar utility. A component might keep track of how many instances of itself have been opened and restrict that number by failing on the open call. 
  589. INHERITANCE 
  590. It’s often useful to build software on top of existing functionality or, alternatively, to take existing functionality and alter it to perform a more specialized function. Both of these things can be accomplished for C++ classes with inheritance. In the former case, the new class will have methods that don’t exist in the base class; in the latter, the new class will have methods with the same name as methods in the base class but that take precedence over the base methods.
  591. Components and the Component Manager support both kinds of inheritance as well, as discussed in the preceding article. All components of a given type must support the same set of calls, although this is enforced only by convention. Components of a particular type and subtype may optionally support other calls as well, and components of a particular type, subtype, and manufacturer may support still more calls.
  592. In the case where a component wants to use the services of another component and perhaps override some of its functions with modifications, Component Manager utilities let a component designate another component as its “parent.” A simple protocol ensures that the correct variant of a routine gets called. When a component must call itself, it must issue the call to its child component, if any. When a component wants to
  593.     
  594.  
  595. Table 1
  596. A Comparison of Calls: Classes (Actual Code) Versus Components (Idealized Code)
  597.     
  598. Declaring a Class
  599. class MyClass {
  600. /* Variables and methods for
  601.     the class */
  602. }
  603.  
  604. Creating a Class Instance
  605. MyClass x;
  606.  
  607.  
  608. Calling a Class
  609. x.MyMethod(arg1, arg2);
  610. Implementing a Class
  611. class MyClass {
  612.     void MyMethod(int arg1, int arg2)  {
  613.     /* Some code for MyMethod */
  614.     }
  615. }    Declaring a Component
  616. myComponent =     RegisterComponent(MyEntryRoutine,
  617.     myType, mySubType, myManufacturer, 
  618.     "A Component");
  619.  
  620. Creating a Component Instance
  621. myComponent = FindComponent(myType, mySubType,
  622.     myManufacturer);
  623. myInstance = OpenComponent(myComponent);
  624. Calling a Component
  625. result = MyMethod(myInstance, arg1, arg2);
  626. Implementing a Component
  627. long MyEntryRoutine(ComponentParams *params,
  628.                                 char *globals)  {
  629.     switch(params->selector)  {
  630.         case kOpen:
  631.         case kClose:
  632.             return noErr;
  633.         . . .    /* other required calls here */
  634.         case MyMethod:
  635.             /* Do my method. */
  636.             /* arg1 and arg2 are in params. */
  637.             return noErr;
  638.         default:
  639.             return routineNotImplementedErr;
  640.     }
  641. }
  642.     
  643.  
  644. rely on the existing implementation of the parent component, it must pass the call to its parent. 
  645. IMPLEMENTING CLASSES AND COMPONENTS 
  646. My discussion of implementation is based on the 68000 platform, since that’s the only one I’ve scrutinized with regard to compiled C++ and Component Manager calls. 
  647.     The routines that can be used with a C++ class are declared, and optionally implemented, within the class declaration. They behave like normal C routines, as described earlier.
  648. A call to a C++ class that has no parents or descendants is compiled as a direct subroutine call, exactly as is a standard routine call. A call to a C++ class that has    
  649.  
  650. parents or descendants is slightly more complicated. A table lookup is used at run time to determine exactly which implementation of a routine gets called for the particular object being operated on. Such a call takes perhaps a dozen assembly instructions.
  651. A component consists of only a single routine. It’s passed a selector and a parameter block. The selector is used to decide which operation to actually perform, and the parameter block contains all the arguments passed by the caller. 
  652. The component’s parameter block is untyped — the component routine has no way to determine what kinds of arguments were originally passed, and herein lies the danger. Some languages, such as LISP, have untyped arguments; in LISP, however, a routine can determine how many arguments have been passed and what the argument types are. A component interface is more like assembly language — or C without prototypes! — in that it can determine nothing about what has been passed to it. 
  653. You can’t compile a C++ program containing a call to a nonexistent routine; the compiler will balk. (Well, OK, this isn’t strictly true: there are dynamically linking systems for C++, and other languages, that let you call a C++ routine that hasn’t been linked with the rest of the compiled source code; the routine can be linked to later, at run time. But no facility of this type is currently standard in the Macintosh Operating System or supported under the standard Macintosh development tools.) In the case of components, the compiler can’t check for such illegal calls, since the particular components that may be opened are decided at run time. Therefore, the caller must be prepared to handle a “Routine Not Implemented” error if a call is made with an unknown selector. 
  654. All calls to components pass through the Component Manager’s dispatch mechanism. The dispatcher must locate the component’s entry point and globals from the component reference, which is not simply a pointer
  655.     but a packed record containing an index into a table and some bits used to determine whether the component reference is still valid. If a client makes a call to a component it no longer has open, the Component Manager has a statistical likelihood of catching this call and returning an appropriate error. 
  656. The Component Manager has facilities to redispatch the parameter block to one of many routines, and those routines are written to take the arguments as originally passed. The Component Manager was originally written for use on the 68000 series of processor; on computers with that processor, the parameter block doesn’t have to be recopied onto the stack for further dispatching. On other processors the parameters might have to be recopied, however.
  657. The Component Manager has been highly optimized and fast dispatching can reduce its overhead still more, but in general its lookup-and-dispatch process still takes several dozen instructions. If the component being called is using the Component Manager’s inheritance mechanism, further overhead is incurred by passing control to the parent or child component. Overall, the Component Manager is quite efficient, but still not as efficient as direct routine calls.
  658. Table 1 compares how classes and components are implemented. 
  659. IN SUM
  660. Components, as supported by the Component Manager, exhibit many of the features of C++ classes. Both encourage a modular approach to solving problems. Both feature inheritance and data hiding. Where they differ is in how they’re declared and implemented, how they do (or fail to do) type checking, and how expensive they are to call. Each occupies its own distinct niche in Macintosh programming: classes as a way to ease development of a single program, components as a way to add systemwide functionality and give control and choice to the user.  
  661.     
  662.  
  663. TIME BASES: THE HEARTBEAT OF QUICKTIME 
  664. GUILLERMO A. ORTIZ 
  665. A time base is the heartbeat of a QuickTime movie. It keeps the movie going and tells the Movie Toolbox when to stop and when to display the next frame. This article explores the concept of time bases and shows how you can use time bases to affect the behavior of movies as well as how to use time base callback procedures for timing purposes. In a basic sense, a time base can be viewed as the black box that maintains the temporal characteristics of a QuickTime movie. When a movie is playing, some of its temporal characteristics are obvious: it has a duration, it’s “moving” or not, and so on. Some of the not-so-obvious characteristics that a time base keeps track of are also important, such as the clock that governs the passing of time as far as the movie is concerned and whether the movie is looping.
  666. Time bases are created dynamically by the Movie Toolbox each time a movie is opened, rather than being stored with a movie. Time bases can also exist by themselves, with no movie attached, and can therefore be used to time other dynamic events, much as you would use a Time Manager task. 
  667. The QuickTime Movie Toolbox provides a high-level interface that lets you modify all the parameters of a movie, some of which implicitly change its associated time base. Most applications therefore will never need to manipulate time bases directly. Nevertheless, there are situations in which it’s necessary to access time bases more directly, such as the following: 
  668. •    when a document presents multiple views of a movie and all views need to be kept in sync
  669. •    when you need to take advantage of the callback functions of a time base
  670. •    when you’re writing a custom movie controller
  671. This article addresses these situations.
  672.  
  673. THE ARROW OF TIME
  674. First let’s define some of the terms related to the way QuickTime treats time:
  675. •    Time scale: the number of units into which a second is subdivided. For most QuickTime movies, the time scale is set to 600, meaning that the smallest fraction of time measurement for the movie is 1/600th of a second.
  676. •    Rate: the multiplier for the time scale. The rate controls how fast the movie plays. When the rate is 1.0, the movie plays at its normal speed, meaning that for each second of play the movie’s time advances a number of units equal to the time scale. If the rate is between 0.0 and 1.0, the movie plays in slow motion, and fewer units are counted off per second of play. A negative rate implies that the movie is playing backward. A rate of 0 means that the movie is stopped.
  677. •    Time value: indicates where we are in the movie being played back. The time value is given as a number of time scale units. When a movie is playing forward from its start, the current time value can be calculated as
  678.     time elapsed (in seconds) * time scale * rate
  679. You can think of a time base as a dynamic container that holds the following information about a process, normally a movie: the time source (either the clock being used as the master clock or the master time base); the time bounds (the start and stop time values) and the current time value; the rate; the time base flags, indicating different conditions for the time base; and a list of callback routines.
  680. Figure 1 illustrates these concepts and shows how they interact. The figure assumes that the clock or time source ticks at a constant speed; however, you could conceivably use a clock that runs at a varied speed, which would make the movie go faster and slower in sync with the clock.
  681. Figure 1 doesn’t show the effect of the time base flags. In QuickTime versions 
  682. 1.0 and 1.5, two mutually exclusive flags are defined — loopTimeBase and palindromeLoopTimeBase. The loopTimeBase flag causes the time base to go back to the start time value when it reaches the stop time value (or vice versa if the movie is playing in reverse); palindromeLoopTimeBase reverses the direction of play when it gets to the start or stop value of the time base.
  683. THE BASIC STUFF
  684. The QuickTime Movie Toolbox is the best mechanism for manipulating movies and their parameters. The high-level calls provided by the Toolbox are all that most applications will ever need. Using graphics as an analogy, suppose that you wanted to
  685.  
  686. Figure 1
  687. Time Concepts in a QuickTime Movie
  688. draw a complicated image. The easiest way to do this would be with QuickDraw, by calling DrawPicture, but you could also interpret the picture by hand and execute its opcodes individually or even set the video RAM pixels directly! Similarly, when working with a movie, you can work directly with its time base, but it’s best to let the Movie Toolbox do as much as possible — not because it’s the only way, but because it’s safer, it lessens the chances for compatibility problems, and it’s simpler. Thus, for time bases associated with movies, it’s best to call SetMovieTime rather than SetTimeBaseTime and to call SetMovieMasterClock rather than SetTimeBaseMasterClock. 
  689. For those cases in which it makes sense to access and modify time bases directly (as in the scenarios mentioned earlier), the Movie Toolbox provides procedural interfaces that allow you to do so. The sample program TimeBaseSimple provided on the Developer CD Series disc shows how to get a time base from a movie, how to interrogate the time base, and how to change some of its parameters. 
  690. Figure 2 shows the window displayed by TimeBaseSimple. This window displays the duration of the time base (in most cases the same as the duration of the movie), a number obtained by subtracting the start time value from the stop time value. It also shows the rate at which the movie is playing, the preferred rate (a value normally set
  691. Figure 2
  692. TimeBaseSimple Window
  693.  
  694. when the movie is created; it will differ from the rate if the movie is stopped or is playing in reverse due to palindrome looping), the name of the clock being used, and the type of looping in effect. 
  695. Through this window, the user can set the preferred rate, which is the rate the Movie Toolbox and the standard movie controller use to set the movie in motion. Radio buttons allow the user to specify the type of looping via the time base flags. The user can also scan the movie backward and forward by clicking the shuttle control in the top left of the window. This control is included in the sample to show how to go forward or backward in the movie by changing the current time value in the movie’s time base.
  696. GETTING AND CHANGING A TIME BASE
  697. Before you can begin working with a time base, you have to get it. TimeBaseSimple does this with the following line:
  698. tb := GetMovieTimeBase(gMoov);            (* get movie's time base *)
  699. GetMovieTimeBase returns the time base associated with the movie gMoov. The variable tb receives this value. 
  700. Getting the clock information. Once you’ve retrieved the time base, you can get the information about it. TimeBaseSimple acquires the information regarding the master clock in order to display its name in the window. The clock information is obtained via the Component Manager. First we obtain the clock component being used by the time base; then we use it to get the information from the Component Manager. 
  701. clock := GetTimeBaseMasterClock(tb);    (* instance of clock being used *)
  702. err := GetComponentInfo(Component(clock), cd, Handle(clockN), NIL, NIL); 
  703. In the variable cd, a ComponentDescription record, GetComponentInfo returns the type of component, the subtype, the manufacturer, and the component flags. Note that the program could be written to pass NIL instead, because the information received is not used. clockN is a handle in which GetComponentInfo returns the name of the component, which is what we’re really looking for. 
  704. Note also that when a time base has been enslaved to another (as discussed later), GetTimeBaseMasterClock returns NIL. To ensure there’s a master clock associated with a time base, the application should first call GetTimeBaseMasterTimeBase; a NIL result indicates that the time base has a master clock, whereas a nonzero result indicates that a master time base exists that contains the master clock. 
  705. Getting and changing the time values. You can get the start and stop time values for a time base as follows: 
  706.  
  707. scale := GetMovieTimeScale(gMoov);    (* first get the time scale *)
  708. startTimeValue := 
  709.     GetTimeBaseStartTime(tb, scale, startTime);    (* get start time *)
  710. stopTimeValue :=
  711.     GetTimeBaseStopTime(tb, scale, stopTime);         (* get stop time *)
  712. Note that the start and stop times returned are given in terms of the time scale being passed; this means that we can get different values for the same time point, depending on the granularity we require. As a matter of fact, in TimeBaseSimple, when we’re preparing the shuttle control, we get the same values but with a different scale:
  713. shuttleScale := moovScale DIV 10;
  714. localDuration := GetTimeBaseStopTime(tBase, shuttleScale, tr);
  715. localDuration := 
  716.         localDuration - GetTimeBaseStartTime(tBase, shuttleScale, tr);
  717. The shuttle control in TimeBaseSimple lets you scan the movie backward and forward. This is implemented by changing the current time value for the time base, which looks something like this:
  718. SetTimeBaseValue(gTBState.tBase, value*10, gTBState.moovScale);
  719.                                                             (* 'movie scale/10' tick *)
  720. Setting the rate. Although you can obtain the current rate for a time base and set the rate directly, for a time base associated with a movie a better approach is to make Movie Toolbox calls such as StartMovie or SetMovieRate. The Movie Toolbox executes these calls by changing the time base associated with the movie. For example, StartMovie gets the preferred rate and sets the time base rate to it, setting the movie’s time base in motion. 
  721. When the movie is being controlled by the standard movie controller, it’s 
  722. important to call MCMovieChanged if you change any movie characteristic, such as the rate or the current time value, to keep the controller in sync with the new settings. As mentioned earlier, it’s better to use high-level interfaces to enact these changes; for example, to change the rate via the movie controller, you can call MCDoAction(mc, mcActionPlay, newRate). 
  723. Using the time base flags. When you access a time base directly, you can set its movie to loop, either normally or backward and forward, by setting the time base flags. GetTimeBaseFlags retrieves the flags for inspection, and SetTimeBaseFlags modifies the flags. In TimeBaseSimple, the SetTBLoop routine sets the looping flags: 
  724. (* Changes the state of looping in the movie if needed. *)
  725. PROCEDURE SetTBLoop(newFlags: LONGINT);
  726. VAR        targetTB: TimeBase;
  727.  
  728. BEGIN
  729.     targetTB := gTBState.tBase;                     (* the movie's time base *)
  730.     SetTimeBaseFlags(targetTB, newFlags);    (* change it *)
  731.     gTBState.flags := newFlags;                     (* remember new state *)
  732. END;
  733. Now that you’ve seen how you can access the state information of a time base, let’s look at some of the possible uses of time bases. 
  734. TIME SLAVES 
  735. One interesting situation arises when you need to play back two or more instances of a movie simultaneously. In such situations you can synchronize the movies by enslaving all the instances to one time base. The central idea behind this is to have control of the movie’s time flow pass through a single point instead of having a number of individual time bases running at the same time. The sample program TimeBaseSlave on the Developer CD Series disc shows how to do this.
  736. TimeBaseSlave splits the window in which the selected movie is to play into four parts, with the quarters rotating while the movie is playing back. Figure 3 shows the TimeBaseSlave window at its four stages of playback. 
  737.     
  738.     
  739. Figure 3
  740. TimeBaseSlave Window at Its Four Stages of Playback
  741.  
  742. The basic programming strategy is as follows:
  743. 1.    Get the time base associated with one of the instances of the movie.
  744. 2.    Force the time base from step 1 to be used for the other instances.
  745. 3.    Start playing the first instance of the movie, controlling it in any way you like. (TimeBaseSlave starts the movie and sets it back to the beginning when it reaches the end.)
  746. 4.    The other instances of the movie will follow blindly.
  747. The EnslaveMovies routine in TimeBaseSlave takes care of all this: FUNCTION EnslaveMovies: OSErr;
  748. VAR        err:                 OSErr;
  749.             masterTimeBase:    TimeBase;
  750.             slaveZero:            TimeRecord;
  751.             slaveZeroTV:        TimeValue;
  752.             masterScale:        TimeScale;
  753.             count:                INTEGER;
  754. BEGIN
  755.     err := noErr;
  756.     masterTimeBase := GetMovieTimeBase(gMoov[1]);
  757.                                             {* time base of first movie instance *}
  758.     masterScale := GetMovieTimeScale(gMoov[1]);
  759.                                             {* needed for SetMovieMasterTimeBase *}
  760.     slaveZeroTV := 
  761.         GetTimeBaseStartTime(masterTimeBase, masterScale, slaveZero); 
  762.                                                                                 {* ditto *}
  763.     FOR count := 2 TO 4 DO         (* slave all movies to first time base *)
  764.         BEGIN
  765.             SetMovieMasterTimeBase(gMoov[count], masterTimeBase, slaveZero);
  766.                                                                          {* now we do it *}
  767.  
  768.             (* real programmers do check for errors *)
  769.             err := GetMoviesError;
  770.             IF err <> noErr THEN 
  771.                 BEGIN
  772.                     ErrorControl('SetMovieMasterTimeBase failed');
  773.                 LEAVE;
  774.                 END;
  775.         END;
  776.     EnslaveMovies := err;
  777. END;
  778.  
  779. Once the slave instances of the movie have been set to obey the first time base, their behavior will mimic the first movie’s actions. In the TimeBaseSlave code, it appears that only the first instance is started and that only it is rewound when the end is reached. These actions are accomplished in TimeBaseSlave by calls to StartMovie and GoToBeginningOfMovie, respectively, with the first movie passed as a parameter. 
  780. You could use this technique to play different movies but have all of them under a single control. It might also be useful when no movies are involved at all but time bases are being used for timing purposes.
  781. TIMELY TASKS
  782. TimeBaseSlave also shows how to take advantage of the callback capabilities of time bases. Callbacks are useful when an application needs to execute given tasks when the time base passes through certain states. You can program time base callbacks to be triggered under the following conditions:
  783. •    when a certain time value is encountered (callBackAtTime)
  784. •    when a rate change occurs (callBackAtRate)
  785. •    when there’s a jump in time (callBackAtTimeJump)
  786. •    when the start or stop time is reached (callBackAtExtremes)
  787. Passing callBackAtTime to NewCallBack shows the use of callbacks that are executed at a specified time value. TimeBaseSlave uses the callback service to rotate the movie pieces at regular intervals; we ask to be called every three seconds in movie time. 
  788. Note that the time value triggering the callback depends on the rate of the time base. In other words, the time value specified will never be reached if the movie isn’t playing (if the rate is 0). If the rate is something other than 1.0 (if the movie is accelerated or is moving in slow motion or in reverse), the specified break will come every three seconds in movie time, not clock time.
  789. CREATING A CALLBACK 
  790. First TimeBaseSlave has to create a callback. This could be accomplished as follows:
  791. cb := NewCallBack(tb, callBackAtTime);
  792. Since we want to be called at interrupt time, however, the line looks like this:
  793. cb := NewCallBack(tb, callBackAtTime + callBackAtInterrupt);
  794. The variable cb receives a callback, which depends on the time base tb. The callback will be executed at specific times and can be scheduled to fire at interrupt time.
  795.  
  796. NewCallBack moves memory, which means that you can’t create a callback while in an interrupt handler. Electing to be called at interrupt time has an advantage over normal interrupt-driven tasks, however, as I’ll explain later. 
  797. PRIMING THE CALLBACK
  798. Once we’re satisfied that the callback was created (cb <> NIL), we proceed to prime the callback. At this point we have only the hook into the time base; priming the callback schedules it to call us. This is accomplished by CallMeWhen, as follows: 
  799. err := CallMeWhen(cb, @FlipPieces, callWhen, triggerTimeFwd, callWhen,
  800.             scale);
  801. FlipPieces is the routine that we want to have called when the specified time value arrives. The callWhen variable is passed both as a refCon (the third parameter) and as the time to trigger the callback (the fifth parameter), the idea being that FlipPieces will need to know the current time. Of course, the refCon parameter can also be used for any other purpose you may see fit.
  802. The time at which the callback is triggered is given a frame of reference by the scale parameter. Remember that a time value without a time scale has no meaning at all. Finally, triggerTimeFwd means that our routine will be called only when the movie is moving forward. This is reasonable since TimeBaseSlave plays back the selected movie in forward motion only.
  803. THE FLIPPIECES ROUTINE 
  804. The routine responsible for servicing the callback follows a simple interface and is defined in TimeBaseSlave as follows:
  805. PROCEDURE FlipPieces(cb: QTCallBack; refCon: LONGINT); (* CallBackProc *)
  806. (* The refCon parameter contains the time that triggers the callback; 
  807. this is the value passed to the CallMeWhen routine. *)
  808. VAR    j:             INTEGER;
  809.         callWhen:    LONGINT;
  810.         scale:        TimeScale;
  811.         stop:        LONGINT;
  812.         tr:            TimeRecord;
  813.         tb:            TimeBase;
  814.         err:            OSErr;
  815. BEGIN
  816.     stage := (stage + 1) MOD 4;
  817.     FOR j := 1 TO MoviePieces DO
  818.         ShiftMoviePieces(j);    (* turn the movie pieces around *)
  819.     scale := 100;                    (* 100 units in this scale means 1 second *)
  820.     callWhen := refCon + 3*scale;        (* call me in 3 seconds *)
  821.     tb := GetCallBackTimeBase(cb);        (* needed for next line *)
  822.     stop := GetTimeBaseStopTime(tb, scale, tr);
  823.     IF callWhen > stop THEN     (* wrap around the three seconds *)
  824.         callWhen := GetTimeBaseStartTime(tb, scale, tr) + callWhen - stop;
  825.                                                                     
  826.     (* now to really reprime the callback *)
  827.     err := CallMeWhen(cb, @FlipPieces, callWhen,
  828.         triggerTimeFwd + callBackAtInterrupt, callWhen, scale);
  829. END;
  830. TimeBaseSlave does the actual splitting of the movie into different views by creating four instances of the same movie and setting the movie clipping region for each one to be the rectangle in which each is expected to display. When it’s time to move the pieces, the movie box of each instance is offset to cover the next spot. Take a look at SplitMovie and ShiftMoviePieces to see the code. 
  831. A FEW CONSIDERATIONS
  832. Inquisitive readers will have noted that when calling CallMeWhen, TimeBaseSlave uses both noninterrupt and interrupt-time invocations. This was done to illustrate one of the advantages of using Movie Toolbox callbacks: the Toolbox takes care of setting up the A5 world when your service routine is called. Having the A5 world set up properly is useful when your program needs to access global variables; other interrupt handlers can’t count on A5 being right when they’re invoked. 
  833. Using time base interrupt callback routines does not, however, liberate the application from the normal limitations of interrupt-servicing routines; for example, you can’t move memory.
  834. As mentioned earlier, although time bases are created automatically when a movie is opened or created, they can also exist on their own. If an application requires services that allow control over the passing of time, it can create a time base and use callbacks to trigger the service routines required. Keep in mind that even when a time base has no movie, the application must still call MoviesTask to guarantee that callback routines will get time to run. 
  835. OTHER TYPES OF CALLBACKS
  836. Time base callbacks can also be triggered by a change in the rate or by a jump in the time value. A change in the rate occurs when the movie is stopped while it’s playing, when a movie is set in motion, or when the playback speed is somehow changed. A jump in time occurs when the current time value in the time base is set to a value outside the normal flow — for example, when a movie that’s playing is set back to the beginning. In addition, QuickTime 1.5 introduces callbacks “at extremes” that can be triggered when the time base time reaches the start or stop time.
  837. These three means of triggering a callback are of interest only if the code is tracking the behavior of the movie, as a movie controller or a media handler would need to do;
  838. the constants used for calling NewCallBack in these cases are callBackAtRate, callBackAtTimeJump, and callBackAtExtremes. 
  839. FINALLY
  840. If you’d like to play with the sample programs, you may want to try some variations. For instance, it’s very easy to modify TimeBaseSlave to have all the movies play at their own beat, with separate time bases, and compare the performance with the original TimeBaseSlave. You could also modify TimeBaseSimple to see the time values obtained with different time scales.
  841. Time bases are an important part of the QuickTime Movie Toolbox. Understanding their role in the way movies play back can be extremely important for developers trying to push the envelope in writing new and innovative QuickTime applications. This article has opened the door; now it’s up to you to decide whether this route will prove beneficial to your efforts.
  842.     HIGHLIGHTS OF QUICKTIME 1.5 NEW FEATURES    
  843.     Listed below are some of the more significant
  844.     features of QuickTime 1.5.
  845.     •    Photo CD: Using QuickTime 1.5 and the Photo CD Access extension, you can work with Kodak Photo CDs on your Macintosh. Photos on the CD appear as standard PICT files and can be opened in any application that opens pictures.
  846.     •    Compact video compressor: A new compressor has been added that provides high-quailty, low data rate playback.
  847.     •    Movie import: Any application that opens movies using QuickTime’s Standard File Preview can import PICS, AIFF, PICT, and System 7 sound files.
  848.     •    1-bit dither: Playback performace of color movies has been significantly enhanced on black-and-white (1-bit) displays. This is particularly useful on PowerBook computers.
  849.         •    Sequence grabber dialogs: To provide for a more flexible and consistent user interface for configuring capture devices, the sequence grabber provides a set of standard configuration dialogs. Support for sound capture is also substantially improved.
  850.     •    Text media handler: In addition to sound and video, QuickTime 1.5 has built-in support for text. The text media handler is built using QuickTime’s new Generic Media handler, which allows you to create your own QuickTime data types.
  851.     •    Standard compression: The Standard Image Compression dialog is now built into QuickTime. The user can pan and zoom the test image within Standard Compression. 
  852.     
  853.  
  854. GRAPHICAL TRUFFLES 
  855.     ANIMATION AT A GLANCE 
  856.     
  857. EDGAR LEE 
  858. The Macintosh has always provided animation capabilities. From the early Macintosh 128K to current CPUs, animation has consistently played a large part in the development of software. And though CPU models continue to change, the theories and concepts behind animation have stayed basically the same. Simply stated, animation is the process of stepping through a sequence of images, each slightly different from the previous.
  859. The thought of animation on the Macintosh usually brings to mind games and multimedia, when in fact the actual use of animation is more prevalent than most people imagine. I’ll describe some common uses and methods of performing animation and get you started on writing your own animation sequences.
  860. METHOD 1: PRIMITIVE BUT EFFECTIVE
  861. One of the most fundamental methods of animation is using the srcXor transfer mode. The basic idea is that once you’ve drawn something in this mode, you can erase it simply by drawing it again, restoring the bits underneath to their previous state. Primitive though it may be, this method is common to many applications. Probably the most obvious example of it can be found in the Finder. Familiar to even the novice Macintosh user is the dotted rectangle that often appears during desktop navigation. The movement of the dotted rectangle, which appears when the user selects multiple icons or drags windows across the desktop, is a simple     form of animation. The dotted rectangle is also used to create the zooming effect when desktop folders are opened and closed. 
  862. To use this method, you set the current transfer mode to srcXor before drawing the object you plan to animate. In the desktop example, the Finder switches to srcXor mode and then draws the dotted rectangle with a simple FrameRect call, with the PenPat set to 50% gray. The movement of the dotted rectangle is accomplished by redrawing the rectangle at its previous position before drawing it at its new location. With srcXor mode, simply redrawing the rectangle at the same position restores the desktop to its original state. So by repeatedly drawing and redrawing the rectangle in its new position, you float a frame across the screen without damaging the contents of the desktop.
  863. As a variation on the dotted rectangle, applications use what’s called the “marching ants” effect. With this effect, the bounding frame gives the illusion that the dashed lines or “ants” are moving around the edges of the box, thereby producing an animated and more interesting visual appearance. The marching ants effect is simple to create. The most common way to do this is with a simple 8-by-8-bit pattern. To create the illusion, you draw a bounding frame by calling FrameRect, with the PenMode set to srcXor and the PenPat set to a pattern defined with diagonal stripes (see the illustration below). Shifting the pattern up one row, and then wrapping the first row of the pattern to the last row, creates the effect. If the rows were shifted down rather than up, the ants 
  864.     
  865.  
  866. would appear to move in the opposite direction. In either case, the ants typically start at one corner of the box and then end at the opposite corner.
  867. As with the dotted rectangle, the frame is continually drawn and redrawn, but this time with each new updated pattern. Note the difference between the two effects when the frame is drawn: With the ants, the frame is constantly being drawn and redrawn even if the rectangle’s coordinates haven’t changed. With the dotted rectangle, the frame is redrawn only when its position has changed. Since no animation takes place when the dotted rectangle is sitting in the same position, it’s not necessary to continually draw the frame in that case.
  868. METHOD 2: NOT SEEING IS MORE THAN BELIEVING 
  869. Another method of performing animation is to use off-screen drawing. With this method, the actual drawing is being done behind the user’s back. The animation frames are prepared off-screen and quickly transferred to the screen with CopyBits to create the animation sequence. Regardless of what CPU you’re running, this method can provide excellent animation effects. And with the advent of GWorlds to simplify the process of building off-screen environments, performing animation with this technique has become much easier. 
  870. In this section I’ll provide some important points to consider when building your own off-screen world and describe how to apply these off-screen worlds to animation. For a detailed description of creating your own custom GDevices, cGrafPorts, and pixMaps, see the Macintosh Technical Note “Principia Off-Screen Graphics Environments.”
  871. Before even considering off-screen animation, you need to determine whether your Macintosh has enough memory for creating the off-screen environment. Without sufficient memory, you might as well forget it. Having high-performance, high-quality animation isn’t cheap. Most of what determines the amount of required memory is the     off-screen world’s dimensions and pixel depth.
  872. •    Typically, or at least for this method, the dimensions of the off-screen world are the same as those of the entire on-screen area. 
  873. •    For the depth of the off-screen world, you’ll need to determine whether it’s based on the depth of the images used in the window or on the depth of the GDevice intersecting the window. In the case where the GDevice is set to direct colors, you may want to create only an 8-bit off-screen world to save memory if your images use only 256 or fewer colors. On the other hand, you may want to create an off-screen world equal to the depth of the GDevice containing the window, for better data transfer performance. 
  874. Once you’ve determined the dimensions and depth for the off-screen world, you’re ready to create the off-screen environment. Note that if you’re using the GWorlds introduced with 32-Bit QuickDraw, many of the off-screen initialization procedures have been simplified. Also, with certain video display cards, the GWorlds can be cached into the NuBus™ card’s memory, providing even better performance when off-screen worlds are used. 
  875. To create the off-screen environment, you pass NewGWorld the off-screen dimensions, depth, and color table, and the routine creates the environment or warns you if there wasn’t sufficient memory. After you’ve made all the required memory checks and created your off-screen environment, either by hand or with NewGWorld, the next step is to create the animation sequence.
  876. In the simplest case, the off-screen world is used to store an identical copy of what’s displayed on the screen. Rather than erasing and drawing the moving object on-screen, you perform all this in the off-screen world. Once the moving object has been drawn in its new position, the off-screen image is transferred to the screen. By continually drawing the next frame of the moving object in the off-screen world before displaying     
  877.  
  878. it on the screen, you produce the animation effect. The following steps describe the process.
  879. 1.    Assuming that the entire window is being used for the animation, create an off-screen environment of the same dimensions as the window, either by hand or with NewGWorld. When you’re defining the depth and color table of the off-screen world, remember that QuickDraw requires extra time to map colors when the destination GDevice’s depth and color table are different from those of the source. 
  880. 2.    Switch to the off-screen grafPort and GDevice and draw the background image. This is the image that the object will be moved on top of; typically it won’t change.
  881. 3.    Draw the object that will be moved or animated into the off-screen world. Actually, any image not part of the background image should be drawn at this time. Also, since the object overwrites the background image, the background under the object will eventually need to be restored.
  882. 4.    Switch back to the on-screen grafPort and GDevice and use CopyBits to transfer the off-screen pixMap to the screen. 
  883. These steps create just one frame of the animation sequence. To create the full sequence, repeat the last three steps until the animation is complete. In step 2, instead of redrawing the entire background, you may want to redraw just the areas that need to be restored, if that information is available. By redrawing just a portion of the damaged background, you’ll notice improved performance, especially when working with higher pixel depths.
  884. Besides providing a quick introduction to off-screen animation, this method has the advantage that it’s simple and straightforward. Since all the objects and images are drawn at one time and in the same environment, it’s easy to create your sequences and synchronize the animation for any moving object. However, as mentioned earlier, large off-screen images at higher pixel depths can really affect the performance of the animation. To overcome this problem, you need to use multiple off-screen worlds.      METHOD 3: SWITCHING INTO HIGH GEAR 
  885. The concept of multilayer off-screen worlds isn’t much different from the basics of off-screen animation. Rather than having just one off-screen environment, you’ve also got an intermediate off-screen layer in which all the actual drawing is completed, leaving the background layer undamaged. So unlike the previous method, where one off-screen world was used for storing the background and the moving object, this method uses two separate off-screen worlds to maintain this information. The following steps describe how the intermediate layer fits in.
  886. 1.    Again, create the background off-screen layer with the same dimensions as the window.
  887. 2.    Switch the current grafPort and GDevice to the background layer, then draw the background image. This layer will never change, since its main purpose is to restore the overwritten areas of the intermediate layer.
  888. 3.    Find the common rectangle containing the object’s previous location and its new location. This can be calculated by passing UnionRect the object’s bounding rectangle for both positions. Be sure the common rectangle uses coordinates local to the window. 
  889. 4.    Create the intermediate off-screen layer with the dimensions of the common rectangle.
  890. 5.    Switch to the intermediate layer and transfer the area of the corresponding common rectangle of the background layer to the current layer. This will restore the area at which the object was last positioned. Rather than having to redraw the background for each frame, you simply replace the damaged area with the background image stored in memory.
  891. 6.    Draw the moving object at its new location in the intermediate layer. If multiple objects are within the same bounding region of this layer, they should be drawn at this time as well.    
  892.  
  893. 7.    Switch to the window layer and use CopyBits to transfer the contents of the intermediate layer to the screen.
  894. Finally, to create the entire animation sequence, repeat steps 3-7 until the animation is complete. The illustration below shows the process of creating one of the frames in the sequence. In this frame, the moving object is the sun, drawn on top of the background image of the mountains.
  895. When moving multiple objects, you’ll need to decide whether to handle the objects separately or in groups. In the case where objects are widely dispersed in the window, it would be more practical to create a separate intermediate layer for each object than to create one layer containing all the objects. Since no changes are occurring in places between widely spread objects, unnecessary time and memory would be spent updating these areas. 
  896. However, if the objects are closely spaced, grouping the objects and creating one intermediate layer would make more sense. Since objects can overlap each other, creating separate off-screen worlds would not be too practical or easily accomplished. So when determining the number of intermediate off-screen layers, you’ll want to first check where the objects are located in the window.
  897. The main advantage of using the intermediate layer is the performance improvement. As mentioned earlier, transferring large blocks of data at high pixel depths can be time consuming. As you can guess, the smaller the transfer image, the less time QuickDraw requires.      Another advantage of using this layer is the ability to isolate the background image. Since all the drawing is taking place in the intermediate layer, there’s no need to redraw the background image for each frame, which can be a real time saver for complex backgrounds. Though more memory is required with the addition of the intermediate layer, the performance gains can sometimes make the extra memory worth it.
  898. Finally, to fully optimize the animation performance, you’ll want to be sure the data transfer from the off-screen layers is as fast as possible. Since you can influence the speed of CopyBits, here are a few points you’ll want to keep in mind when creating and using off-screen layers:
  899. •    For indexed GDevices, the same color table should be used for the window and the off-screen layers. Since no color mapping should be required when the source and destination share the same color table, less time is needed for the data transfer. 
  900. •    Be sure no nonrectangular clipping is involved in the CopyBits operation. Having to check which pixels should or shouldn’t be clipped can really slow down the data transfer.
  901. •    Use srcCopy as the transfer mode for CopyBits. 
  902. Any other mode takes extra time to perform the logical operations on the source and destination pixels. 
  903. •    Set the current port’s foreground color to black and background color to white before calling CopyBits. This will ensure that no colorizing (which can be slow) takes place.
  904. •    Make sure no dithering takes place. Unless you have your own rippin’ fast method for dithering, try to stay away from it. If possible, prepare the images in the off-screen layers in such a way that dithering isn’t needed.
  905. •    Keep the same alignment of pixels for the source and destination pixMaps. Having to shift unaligned pixels can take time.
  906. •    The source and destination rectangles should be the same size. Scaling requires extra work.    
  907.  
  908. By following as many of these points as possible, you’ll improve the performance that you’ll get out of CopyBits and waste less time in the on-screen updates. 
  909. LIGHTS, CAMERA, ACTION!
  910. I’ve presented several methods of animation; which method to use depends on your application. In fact, you may choose to use several methods or switch between methods under different system requirements. Say your application uses multiple layering for optimal animation; under low-memory conditions, you may want to switch to just one off-screen world to provide at least some type of off-screen animation. But if that isn’t even an option, you may have to do all the animation on-screen. For an example that does exactly that, see DTS.Draw in the Sample Code folder on the Developer CD Series disc. If sufficient memory is available to create the off-screen worlds, the application uses the multilayer method; otherwise, the application decides on the next best method based on the current available memory. 
  911. This column has described different animation techniques, but the principle behind them is basically the same, even if the results don’t show it. Given a set of slightly different images, all the     methods involve stepping through the series of images, where each object in the image is erased before the next object in the series is displayed.
  912. Animation provides excellent visual effects, more fun for the programmer, and most important, an enhanced experience for the user. Now that you’ve got the basics of animation on the Macintosh, I hope you’ll be inspired to animate your own applications!
  913.     RECOMMENDED READING
  914.     •    “Macintosh Display Card 8•24 GC: The Naked Truth” 
  915. by Guillermo Ortiz, develop Issue 3.
  916.     •    Macintosh Technical Notes “Principia Off-Screen Graphics Environments” (formerly #120) and “Of Time and Space and _CopyBits” (formerly #277).
  917.     •    Computer Graphics: Principles and Practice, 2nd ed., by J. D. Foley, A. Van Dam, S. K. Feiner, and J. F. Hughes (Addison-Wesley, 1990), Chapter 21. 
  918.     
  919.  
  920. BETTER APPLE EVENT CODING THROUGH OBJECTS
  921. ERIC M. BERDAHL
  922. In “Apple Event Objects and You” in develop Issue 10, Richard Clark discusses a procedural approach to programming for Apple events and goes into details of the Apple event object model. This article reveals a few simple truths about the significance of Apple events and the Apple event object model, focusing on how the object model maps onto a typical object-oriented application. It also provides an object-oriented C++ framework for adding scripting support.It’s every developer’s worst nightmare: Your team has just spent the last two years putting the finishing touches on the latest version of Turbo WhizzyWorks II NT Pro, which does everything, including make coffee. As a reward for your great work, the team is now preparing to do some serious tanning development on an exotic island. Then, Marketing comes in with “one last request.” They promise it’s the last thing they’ll ask for before shipping, and in a weak moment, you agree that one last little feature won’t hurt your itinerary. “Good,” quips the product manager, “then as soon as you add full scripting support, you can enjoy your vacation.”
  923. You know that to add scripting support, you need to delve into Apple events. You think this requires learning about Apple events, the Apple event object model, and scripting systems. Further, you think Apple events must be designed into your application from the ground up and can’t possibly be added without a complete redesign. Which of the following is the appropriate reaction to Marketing’s request?
  924. A.    Immediately strangle your sales manager and plead justifiable homicide.
  925. B.    Look around while laughing hysterically and try to find the hidden Candid Camera.
  926. C.    Change jobs.
  927. D.    Feign deafness.
  928. E.    None of the above.
  929.  
  930. Unfortunately, there’s no correct answer, but the scenario is all too real as developers are increasingly being asked to add scripting support to their applications. The design of Apple events and the Apple event object model can provide the user with more power than any other scripting system. However, to access the power of the design you need to work with the complex interface provided by the Apple Event Manager. By its nature, this interface collapses to a procedural plane of programming that prevents developers from fully taking advantage of the object-oriented design inherent in the Apple event world. The Apple event object model is difficult to implement without some fancy footwork on the part of your framework. But remember the words of Marshall Brodeen, “All magic tricks are easy, once you know the secret.” With this in mind, join me on a trip through the rabbit hole into AppleEventLand.
  931. WHAT ARE APPLE EVENTS AND THE OBJECT MODEL?
  932. Whenever I give presentations on Apple events, the audience has an overwhelming urge to ignore the theory and jump into coding. Resist the urge. For most developers Apple events provide an unfamiliar perspective on application design. To appreciate the significance of Apple events and the object model, it’s important to understand their underlying concepts and background. So, although you’ll be reading about code later, a little theory needs to come first.
  933. At the most basic level, Apple events are a program-to-program communication (PPC) system, where program is defined as a piece of code that the Macintosh can see as an application (in other words, that has a real WaitNextEvent-based event loop). However, billing Apple events as PPC is akin to describing an F-16 as merely a plane. To fully understand how Apple events are more than simple program-to-program communication, you need to take a look at the Apple event object model. 
  934. The object model isn’t really defined in a pithy paragraph of Inside Macintosh, but is instead a holistic approach to dealing with things that users call objects. In a literal sense, the object model is a software developer’s description of user-centric objects or cognitive objects.
  935. COGNITIVE THEORY
  936. Cognitive science tells us that people interact with the world through objects. A printed copy of develop is an object, a plant in the corner of your office is an object, and a can of Coke Classic on your desk is an object. Each of the objects has properties, behaviors, and parts. Some properties exist for each of the objects (for example, each one has a name) and other properties make sense for only some of the objects (for example, page size makes sense only when applied to develop). Behaviors are quite similar to properties in their ephemeral binding to objects. Only Coke will fizz, but all three objects will decompose. However, they each decompose in a different way. Further, each object can be separated into arbitrary parts that are themselves objects. The plant can be separated into branches, which can in turn be separated
  937. into leaves. The plant itself can also be separated into leaves, so leaves are contained by both branch objects and plant objects.
  938. BACK INSIDE THE COMPUTER
  939. Now, since a user will someday interact with your software, and since users interact with the world in terms of cognitive objects, it makes sense to model software in terms of cognitive objects. Hence, the object model describes objects in a rather ghostlike fashion whereby objects have behaviors and properties and contain other objects. Although the object model defines an inheritance for each category of objects (for example, Journal might inherit from OpenableThing which might inherit from Object), it’s used only for the purpose of grouping similar behaviors. Just as in the mind, the only thing that’s important is the identity of a specific object in existence at a given time — its categorization is purely a detail of implementation.
  940. Gee, this sounds a lot like what real programmers mean when they talk about objects. Strangely enough, real objects and cognitive objects are quite related. Many references cite cognitive theory as justification for beginning to program in an object-oriented style. Object-oriented code tries to get closer to the language of the native operating system of the human mind than traditional procedural approaches, and the format of an Apple event object mirrors natural language to a surprisingly large degree. It comes as no surprise, then, that Good Object Design lends itself quite easily to slipping in support for Apple event scripting.
  941. APPLE EVENT OBJECTS AND SCRIPTING
  942. The motivation for you to provide object model support is so that your users can “script” your application. There are a variety of solutions available today that allow advanced users to write things that resemble DOS batch files or UNIX® shell scripts. These entities are commonly called scripts, but in the context of Apple events a script is something with greater potential. Whenever a user thinks “I want to sharpen the area around the rose in this picture,” a script has been formed. If this seems too simplistic, consider it again. Script here refers to the earliest conception of a user’s intent to do something. It’s not relegated to the world of the computer and does not imply any given form or class of forms; an oral representation (voice interface a la the Knowledge Navigator) is equally as valid as a written one (traditional scripting systems). From this perspective, the definition of script takes the user to a greater depth of control over applications than previously dreamed of, allowing access to the very engine of your application by the very engine of the user. This is the great empowering ability of Apple events: they enable users to use their native operating system — the mind — with little or no translation into computerese. 
  943. OBJECT-ORIENTED PROGRAMMING OBJECTS
  944. The biggest problem with Apple event objects is the interface provided by the Apple Event Manager. Instead of allowing you to write real object-oriented source code
  945. using a given class library that implements basic Apple event and object model functionality, the Apple Event Manager requires you to register every detail programmatically. You must declare what classes exist, which methods exist and where, and what relationships are possible within and between classes. Although at first this flexibility seems advantageous, many developers find it a problem later when they have to declare everything again at run time. Anyone with secret desires to design an object-oriented runtime environment and a compiler/linker combination to support that environment will feel quite at home with Apple event coding.
  946. The second biggest problem with Apple event objects is that programs aren’t written in the Apple event (user) world. Instead, they’re often written in object-oriented programming languages like LISP and C++. What’s needed is a good generic interface to translate objects from the user world of natural language into the world of LISP or C++ objects. Scripting systems do some of the work by delivering Apple event objects to applications in the form of object specifiers, a strange data structure that resembles a binary form of natural language stuffed into the familiar Apple event generic data structure AEDesc. However, object-oriented applications ship objects around in the form of . . . well . . . objects! So, you need translation from binary natural language to actual objects. Easy, huh? (Don’t hurt me yet — this will seem fairly straightforward after reading a bit further.)
  947. Presenting a new interface should solve the problem of the Apple Event Manager interfaces. Presenting that new interface in terms of the familiar object-oriented class libraries should solve the problem of different paradigms. So, if these two problems are approached with an object perspective, it’s clear that some of the classes in your program need to include a set of methods that implement object model protocols. Application domain classes must be able to return objects contained within them and to perform generic operations on themselves. It turns out that if your classes also provide the ability to count the number of a specific type of object they contain, you can provide a rudimentary, yet powerful, parsing engine for transforming objects from the Apple event world into the traditional object programming world.
  948. Further analysis indicates that only those application domain classes that correspond to object model classes need this protocol. This indicates that the protocol for providing Apple event object model support is probably appropriate to provide in a mixin class (a class that’s meant to be multiply inherited from). In this way, only those classes that need to provide object model support must provide the necessary methods. In the sample application discussed later, that class is called MAppleObject. MAppleObject plays a key role in UAppleObject, a generic unit that can be used to provide Apple event object model support to any well-designed C++ application.
  949. Apple provides a convenient solution to the user versus programming language problem in the form of the Object Support Library (OSL). The OSL has the specific responsibility of turning an object specifier into an application’s internal representation of an object. (See “A Sample OSL Resolution” for an example of how
  950. A SAMPLE OSL RESOLUTION    
  951. Here’s a short example to give you a feel for how the OSL actually works. Don’t read too much into the details of object resolution, but do try to understand the flow and methodology the OSL applies to resolve object specifiers. Also, don’t worry too much about how the OSL asks questions; the protocol you’ll actually be using in UAppleObject hides such details from you. 
  952. Figure 1 on the next page gives an overview of the process. Consider the simple object specifier “the third pixel in the first scan line of the image called ‘Girl with Hat,’” and an Apple event that says “Lighten the third pixel in the first scan line of the image called ‘Girl with Hat’ by twenty gray levels.” On receiving this Apple event (Lighten) the application notes that the direct object of the event (the third pixel in the first scan line of the image called “Girl with Hat”) is an object specifier and asks the OSL to resolve it into a real object.
  953. At this point the parsing engine in the OSL takes over, beginning a dialog with your application through a set of preregistered callback routines. Notice that the object specifier bears a striking resemblance to a clause of natural language — English in this case. This is not unintentional. Apple event objects are cognitive objects, and cognitive objects are described by natural language — hence the parallels between object specifier formats and natural language. Further, the parsing engine inside the OSL operates like a high school sophomore parsing sentences at the chalkboard. But I digress . . .
  954. To continue, the OSL asks the null object to give it a token for the image called “Girl with Hat.” (Tokens are the Coin 
  955.     of the Realm to the OSL.) So the null object looks through its images to find the one named “Girl with Hat” and returns a token to it. 
  956. The OSL then turns around and asks the image called “Girl with Hat” to give it a token for the first scan line. After getting this token, the OSL has no further use for the image token, so it’s returned to the application for disposal. In effect, this says, “Uh, hey guys, I’m done with this token. If you want to do anything like free memory or something, you can do it now.” Notice how polite the OSL is.
  957. Next, the OSL asks the scan line for a token representing the third pixel, which the line handily returns. Now it’s the scan line token’s turn to be returned to the application for recycling. The OSL has no further use for the scan line token, so the application can get rid of it if necessary.
  958. Finally, having retrieved the token for the third pixel of the first line of the image called “Girl with Hat,” the OSL returns the token with a “Thanks, and come again.” The application can then ask the object represented by the token to lighten itself (remember that was the original Apple event), and dispose of the token for the pixel.
  959. As you can see, the OSL operates by taking an unreasonable request, “give me the third pixel of the first line of the image called “Girl with Hat,” and breaks it into a number of perfectly reasonable requests. Thus, your application gets to take advantage of its innate knowledge of its objects and their simple relationships to answer questions about complex object relationships.    
  960. the OSL actually works.) The OSL implements a generic parsing engine, applying a few simple assumptions about the state of the application’s design to the problem. However, for all the power provided by the engine within the OSL, it lacks an object-oriented interface. Instead, it uses a paradigm like that provided by the Apple Event Manager, requiring the application to register a set of bottleneck routines to provide application-specific functionality. As with the Apple Event Manager, you must write
  961. Figure 1
  962. Resolving an Object Specifier
  963. routines that implement runtime dispatching to the individual objects your application creates instead of using the natural method-dispatching mechanisms found in your favorite object-oriented language, whatever it may be.
  964. The nicest thing about the OSL is that, like the Apple Event Manager itself, it applies itself quite well to being wrapped with a real object-oriented interface (although you have to write it yourself, sigh). Curiously, the OSL solves both problems — poor interface and cognitive versus object-oriented programming differences. With a nice object-oriented framework, you can write your code once, in the fashion to which you’re accustomed. I won’t lie to you by telling you the job becomes easy, but it does change from obscure and harrowing to straightforward and tedious.
  965. OBJECT MODEL CONCEPTS
  966. There are two basic concepts defined in the object model. One is containment, which means that every object can be retrieved from within some other object. In the language of the object model, every object is contained by another object. The only exception to this rule is the single object called the null object. The null object is commonly called the application object, and may or may not be contained by another object. In practice, a null object specifier is like a global variable defined by the object model. The application implicitly knows which object is meant by “null object.” Object resolution always begins by making some query of the null object.
  967. For example, with a simple image processor, it would be appropriate to state that pixels are contained by scan lines, scan lines by images, and images by windows. It’s also appropriate to have pixels contained by images and windows. Windows themselves have no natural container, however. Therefore, they must be contained by the null object. One way you can decide whether these relationships make sense for your product is to ask if a user could find it useful to do something to “the eighth pixel of the second scan line” or to “the twentieth pixel of the image.” If statements like these make sense, a containment relationship exists.
  968. The second basic concept of the object model is behavior. Behavior is quite simple; it means that objects must be able to respond to an Apple event. Behavior correlates directly with the traditional object programming concept of methods of a class. In fact, as you’ll see, the actual Apple event–handling method of Apple event objects is usually a switch statement that turns an Apple event into a dispatch to the C++ method that implements the Apple event’s functionality.
  969. Taken together, the concepts of containment and behavior define the limits for objects in the model of the Apple event world. The object model resembles the programming worlds of Smalltalk or LISP, where everything is an object. Everything. For those familiar with these paradigms where even integers, characters, and floating-point numbers are full first-citizen objects, the Apple event world will be a refreshing change from traditional programming in C++ and Pascal.
  970.  
  971. FINDING THE OBJECTS
  972. The overriding concept in designing object model support in your application is to do what makes sense for both you — as the developer — and the user. 
  973. 1.    It’s best to begin by deciding what objects exist in your application. To decide what objects exist, do some user testing and ask the users what objects they see and what objects they think of while using your application. If this isn’t possible, just pretend you’re a user and actually use your application, asking yourself those same questions. For example, if you ask users for a list of objects in an image processing application (and refrain from biasing them with computer mumbo jumbo) they’ll probably list such things as window, icon, image, pixel, area, scan line, color, resolution, and menu bar. (Figure 2 shows types of objects a user might list.) Guess what? In reality, those probably are object model classes that an image processing application could support when it supports the object model. Since the objects you’ll want to support are user-level kinds of entities, this makes perfect sense.
  974. Figure 2
  975. Objects the User Sees
  976. 2.    After deciding what objects exist in your application, run another series of user tests to determine the relationships between different objects. For example, what objects does a window contain? Menus? Pixels? Areas? Color? What objects does an area contain? Pixels? Scan lines? Windows? This is just as simple as it seems. Just ask the question, “Does this object contain that object?” If you get immediate laughter, move on. Positive answers or thoughtful looks indicate a possible relationship.
  977. 3.    Finally, determine what properties and behaviors each object class will have. These questions can be asked during the same user test as in step 2 because the answers users will give are closely related. Will you be able to ask windows for their names or pixels for their colors? How about asking windows to move or close? Can you ask pixels to change color or make a copy?
  978. You may have noticed that this approach falls into the category of Good Object Design. Undoubtedly, anyone who does object-oriented design has gone through a similar process when developing an application. Resist the temptation to design the application’s internal structure using G.O.D. and be done with it, because the object model design is different from the application design. When designing the application, you typically analyze structure from the perspective of eventually implementing the design. Thus, you impose design constraints to make implementation easier. For example, you probably don’t keep representations of images, areas, and pixels, but choose one model for your internal engine — a reasonable solution for a programmer looking at the problem space. A typical image processing program usually has real classes representing images, and probably has an area class, but may not have a pixel class or scan line class. Pixels and scan lines may be implemented by a more basic representation than classes — simple indices or pointers into a PixMap, for example.
  979. However, when you design object model support, you have a very different perspective. You’re designing classes based on user expectation and intention, not on programmer constraints. In object model design of an image processor, you do have TImage, TArea, TScanLine, and TPixel classes, regardless of your internal representation. This is because a user sees all these classes. The TImage and TArea may be the same as your internal engine’s TImage and TArea, and probably are. After all, there’s little reason to ignore a perfectly usable class that already exists. However, the TPixel and TScanLine classes exist only to provide object model support. I call classes that exist only to provide object model support ephemeral classes.
  980. Undeniably, the most useful tool for finding objects is user testing. Another important source of information is the Apple Event Registry. The Apple Event Registry describes Apple event classes that are standardized in the Apple event world. The Registry lists each class along with its inheritance, properties, and behaviors. It’s also the last word on the values used to code object model support. For example,
  981.  constants for predefined Boolean operators and class types are listed in detail. As you follow the process for finding the objects in your application, you can use the elements found in the Registry as a basis for your investigation and for later implementation. For example, if your user tests reveal that a pixel class is appropriate for your application and a Pixel class is documented in the Registry, you should probably use the behaviors and properties documented there as a basis for your application’s TPixel class. Doing so allows your application to work well with existing scripts that manipulate pixels and allows your users to have a consistent scripting experience across all pixel-using applications.
  982. OSL CONcePTS
  983. In addition to the principles imposed by the object model itself, the OSL makes a few reasonable assumptions about what applications provide to support their objects. Since the object model requires that objects be able to retrieve contained objects, the OSL allows an object to count the number of objects of a given type contained within them. So, if an image contains scan lines, the image object needs to be able to count the number of scan line objects contained within it. Of course, in some circumstances, the number of objects that are contained can’t be counted or is just plain big (try asking how many TSand objects are contained in a TBeach object). In this case, the OSL allows the object to indicate that the number can’t be counted.
  984. Additionally, the OSL allows applications to apply simple Boolean operators to two objects. The operators themselves are a part of the Apple Event Registry. They include the familiar operators like less than, equal to, and greater than as well as some more interesting relations like before, after, over, and under. The requirement for these operators is that they have Boolean results. This means that if object1 and object2 have operator applied to them, the expression object1 operator object2 is either true or false. Of course, there’s no requirement that every class implement every operator, only those that make sense. It makes little sense to ask if an object of type TColor is greater than another, but brighter than is another story.
  985. During resolution of an Apple event, the OSL asks for tokens of objects between the application object and the final target to be returned (as described earlier in this article in “A Sample OSL Resolution”). To a programmer, they look like AEDescs being passed around, but the OSL treats them specially: 
  986. •    The OSL guarantees that it will never ever look in the data portion of the token, the dataHandle field of the AEDesc. It may peek at the descriptorType field from time to time, but the data itself is golden. This becomes a critical point when applying the OSL engine to an object-oriented interface. The token data of Apple event objects should be “real” object references in whatever programming language is appropriate, and keeping the data completely private to the application makes this possible. 
  987.  
  988. •    The application must be able to recognize the token when it appears again. Thus, if the application returns a token for the image “Girl with Hat” to the OSL, the application must be able to recognize the significance of having that token passed back by the OSL. 
  989. •    The OSL asks only that we guarantee the validity of a token during the resolution of the current object specifier. 
  990. Since the data contained in the AEDescs is private, the OSL must provide a system for the application to know when a token is being created and when it’s being terminated. Creation of tokens is provided through the containment accessor protocol. Termination is provided by a callback routine which does the actual token disposal and which the application registers with the OSL. This callback is invoked from AEDisposeToken and comes in handy when applying the object model to C++ classes. 
  991. There are also a number of features that are beyond the scope of this article. One of these is the OSL concept of marking objects. This means that objects are labeled as belonging to a particular group. The contract the OSL makes with the application is that the OSL will ask whenever it needs a new kind of mark, and the application will recognize whether any object is marked with a particular mark. Further, given the mark itself, the application will be able to produce all the objects with that mark. If this sounds particularly confusing, just consider mark objects as typical list objects. Given a list and an object, it’s quite natural to answer the question, “Is this object in this list?” Further, it’s quite natural to answer the question, “What are all the objects contained in this list?” 
  992. The framework for adding Apple event support described later in the section “Inside UAppleObject” satisfies the basic OSL requests for counting objects, applying Boolean operators, and handling tokens. However, it doesn’t handle marks. The intrepid reader could add support for this feature with a little thought.
  993. CLASS DESIGN
  994. To incorporate object model support into your applications, you need a class library that implements the object model classes you want to support — for example, the TWindow, TImage, TArea, and TPixel classes described earlier. These classes exist because they represent Apple event objects the application will support. Then you create a mapping of Apple event objects to the C++ classes that implement them (see Figure 3). For the sake of argument, say that TWindow, TArea, and TImage are also part of the class library used to implement the non–object-model portions of the program. The TPixel class is an ephemeral class. What these four classes have in common is a mixin class, MAppleObject, that provides the hooks for adding object model functionality (see the next section, “Inside UAppleObject,” for more details).
  995. Figure 3
  996. The Objects As Implemented
  997. MAppleObject must include protocol that implements the object model and OSL concepts. Given an MAppleObject, there should be protocol for returning an object contained within MAppleObject. This accessor method is expected to return an object that satisfies the containment request. It also needs to inform the framework if the returned object is an ephemeral object — some might say that such an object is lazy evaluated into existence. As a practical matter, this informs the framework whether an object needs to be deleted when the OSL disposes of the object’s token (as described in “A Sample OSL Resolution”). Obviously, it would be undesirable to have the framework delete the TImages because the application depends on them for its internal representation. It would be equally stomach-turning to have all the TPixels pile up in the heap, never to be deleted.
  998. Since TPixel objects don’t actually exist until they’re lazy evaluated into existence, you’re free to design their implementation in a wide variety of ways. Remember that one of the contracts the OSL makes with the application is that tokens need to be valid only during the resolution of the current object specifier. Well, consider that the implementation of images is just a handle of gray values. Normally, if someone suggested that a pixel be implemented as an index into a block of data, you’d throw temper tantrums. “What!” you’d yell, “What if the pixel is moved in the image! Now the index is stale.” This is not an issue for tokens, because they’re transient. Since pixels won’t be added during the resolution of an object specifier, such a 
  999. representation is fine. Of course, if you’d prefer a more robust implementation, that’s fine, too, but remember that the OSL doesn’t impose such robustness on you.
  1000. MAppleObject must also include a protocol to implement the comparison operators, counting protocol, and behavior dispatching. As a practical matter, these methods will likely be large switch statements that call other, more meaningful, methods depending on the details of the request. For example, the counting protocol might key on the kind of objects that should be counted and invoke methods specialized to count contained objects of a specific class.
  1001. Finally, each class provides protocol for telling clients which object model class the object represents. This is necessary for the framework to be able to communicate with the OSL. During the resolution conversation the OSL holds with the framework, the framework returns descriptors of each object the OSL asks for. These descriptors are required to publish to the OSL the type of the object returned from the request.
  1002. INSIDE UAPPLEOBJECT
  1003. UAppleObject is a framework whose main contribution is the class MAppleObject. MAppleObject provides the basis for integrating Apple event objects and Apple event object support into object-oriented applications. UAppleObject also includes a dispatcher, TAppleObjectDispatcher, and the 'aedt' resource. You drop the UAppleObject files into your application and immediately begin subclassing to provide Apple event functionality.
  1004. EXCEPTION HANDLING IN UAPPLEOBJECT
  1005. Developers familiar with the details of Apple event implementation are no doubt aware that the Apple Event Manager deals exclusively with error code return values, as does the rest of the Toolbox. When the Apple Event Manager invokes a developer-supplied callback routine, that routine commonly returns an integer error code. This style of error handling is found nowhere in UAppleObject. Instead, UAppleObject uses the UMAFailure unit to provide exception handling. UMAFailure is a unit available on the Developer CD Series disc that provides both a MacApp-style exception-handling mechanism for non-MacApp programs and excellent documentation for its use.
  1006. Wherever UAppleObject is invoked through a callback routine that expects an error code to be returned, all exceptions are caught and the exception’s error code is returned to the Toolbox. Therefore, when an error occurs, call the appropriate FailXXX routine provided by UMAFailure — for example FailMemError, FailNIL, or FailOSErr. In the UAppleObject documentation, calling one of these routines is referred to as throwing an exception.
  1007. MAPPLEOBJECT
  1008. The major workhorse of UAppleObject is MAppleObject, an implementation of the basic Apple event object functionality. MAppleObject is an abstract mixin class that provides the protocol necessary for the UAppleObject framework to resolve Apple event objects and handle Apple events.
  1009. class MAppleObject
  1010. {
  1011. public:
  1012.                 MAppleObject();
  1013.                 MAppleObject(const MAppleObject& copy);
  1014.     virtual ~MAppleObject();
  1015.  
  1016.     MAppleObject& operator=(const MAppleObject& assignment);
  1017.  
  1018.     virtual DescType GetAppleClass() const = 0;
  1019.  
  1020.     virtual long CountContainedObjects(DescType ofType);
  1021.     virtual MAppleObject* GetContainedObject(DescType desiredType,
  1022.         DescType keyForm, const AEDesc& keyData, Boolean& needDisposal);
  1023.     virtual Boolean CompareAppleObjects(DescType compareOperator, 
  1024.         const MAppleObject& toWhat);
  1025.     virtual void DoAppleEvent(const AppleEvent& message, 
  1026.         AppleEvent& reply, long refCon);
  1027.  
  1028.     static void SetDefaultAppleObject(MAppleObject* defaultObject);
  1029.     static MAppleObject* GetDefaultAppleObject();
  1030.  
  1031.     static void GotRequiredParameters(const AppleEvent& theAppleEvent);
  1032.  
  1033.     static void InitAppleObject(TAppleObjectDispatcher* dispatcher = nil);
  1034. };
  1035. GetAppleClass 
  1036. DescType GetAppleClass() const = 0;
  1037. GetAppleClass is an abstract method that returns the object model type of an object. Every MAppleObject subclass should override this method to return the object model type specific to the individual object.
  1038. CountContainedObjects 
  1039. long CountContainedObjects(DescType ofType);
  1040. CountContainedObjects should return the number of objects of the indicated type that are contained within the receiver object. This is usually done by counting thenumber of objects your subclass knows how to access and adding it to the number 
  1041. of objects the parent class finds (in other words, call the inherited version and add it to the number you find yourself). If the number of objects is too large to be enumerated in a signed 16-bit integer, CountContainedObjects may throw the errAEIndexTooLarge exception.
  1042. GetContainedObject 
  1043. MAppleObject* GetContainedObject(DescType desiredType, DescType keyForm,
  1044.     const AEDesc& keyData, Boolean& needDisposal);
  1045. GetContainedObject is a generic method for obtaining an object contained by the receiver. Subclasses always override this method to provide access to the subclass’s contained objects. The desiredType, keyForm, and keyData arguments indicate the specific object to be returned as the function result. If the resulting object is one used in the framework of the application, GetContainedObject should return false in the needDisposal argument. 
  1046. The alternative is for GetContainedObject to create the resulting object specifically for this request; in this case, it returns true in the needDisposal argument. If needDisposal is true, the UAppleObject framework deletes the result object when it’s no longer needed.
  1047. CompareAppleObjects 
  1048. Boolean CompareAppleObjects(DescType compareOperator, 
  1049.     const MAppleObject& toWhat);
  1050. CompareAppleObjects performs the logical operation indicated by the arguments, returning the Boolean value of the operation. The semantics of the operation 
  1051. is this compareOperator toWhat. So, if the compareOperator parameter were kAEGreaterThan, the semantics of the method call would be this is greater than toWhat. Subclasses always override this method to provide the logical operations 
  1052. they support.
  1053. DoAppleEvent 
  1054. void DoAppleEvent(const AppleEvent& message, AppleEvent& reply,
  1055.     long refCon);
  1056. When an object is identified as the target of an Apple event, it’s sent the DoAppleEvent message. The message and reply Apple event records are passed 
  1057. in the corresponding arguments. If the direct parameter to the message is typeObjectSpecifier, the object specifier is guaranteed to resolve to the receiver; otherwise the receiver is the application object. Additional modifiers for the event can be extracted from the message, and the reply should be filled in by DoAppleEvent, if appropriate. The refCon parameter is the shortcut number registered with the UAppleObject framework (see the section “The 'aedt' Resource”). Subclasses always override DoAppleEvent to dispatch their supported Apple events to appropriate methods.
  1058. SetDefaultAppleObject and GetDefaultAppleObject 
  1059. void MAppleObject::SetDefaultAppleObject(MAppleObject* defaultObject);
  1060. MAppleObject* MAppleObject::GetDefaultAppleObject();
  1061. GetDefaultAppleObject returns the MAppleObject currently registered as the null container. Similarly, SetDefaultAppleObject registers a particular object as the null container. Usually, the object serving as null container doesn’t change during the lifetime of the application — it’s always the application object. In this case, just call SetDefaultAppleObject from within your application object’s constructor. But remember that any Apple event that arrives when no null container is registered falls on the floor and is returned to the Apple Event Manager with the errAEEventNotHandled error.
  1062. GotRequiredParameters 
  1063. void MAppleObject::GotRequiredParameters(const AppleEvent&
  1064.     theAppleEvent);
  1065. GotRequiredParameters is here for convenience. To do Apple event processing “right,” each Apple event handler should check that it has received everything the sender sent. Almost every good Apple event sample has this routine and calls it from within the handlers. Since all handling is done from within an MAppleObject method, it makes sense for this protocol to be a member function of MAppleObject. However, the member function really doesn’t need access to the object itself, and could actually be called from anywhere, so it’s a static member function.
  1066. InitAppleObject 
  1067. void MAppleObject::InitAppleObject(TAppleObjectDispatcher* dispatcher = 
  1068.     nil);
  1069. InitAppleObject must be called once after the application initializes the Toolbox and before it enters an event loop (specifically, before WaitNextEvent gets called). This method installs the given object dispatcher, or creates a TAppleObjectDispatcher if nil is passed.
  1070. TAPPLEOBJECTDISPATCHER 
  1071. The second element of UAppleObject is TAppleObjectDispatcher. Together with MAppleObject, TAppleObjectDispatcher forms a complete model of Apple events, the objects themselves, and the Apple event engine that drives the object protocol. TAppleObjectDispatcher is responsible for intercepting Apple events and directing them to the objects that should handle them. A core feature of this engine is the ability to resolve object specifiers into “real” objects.
  1072. class TAppleObjectDispatcher
  1073. {
  1074. public:
  1075.     TAppleObjectDispatcher();
  1076.     virtual ~TAppleObjectDispatcher();
  1077.  
  1078.     virtual void Install();
  1079.  
  1080.     virtual MAppleObject* ExtractObject(const AEDesc& descriptor);
  1081.     virtual void StuffDescriptor(AEDesc& descriptor, MAppleObject* object);
  1082.  
  1083.     virtual void HandleAppleEvent(const AppleEvent& message,
  1084.         AppleEvent& reply, long refCon);
  1085.  
  1086.     virtual void AccessContainedObjects(DescType desiredClass,
  1087.         const AEDesc& container, DescType containerClass, DescType form,
  1088.         const AEDesc& selectionData, AEDesc& value, long refCon);
  1089.     virtual long CountObjects(const AEDesc& containerToken,
  1090.         DescType countObjectsOfType);
  1091.     virtual Boolean CompareObjects(DescType operation, const AEDesc& obj1,
  1092.         const AEDesc& obj2);
  1093.     virtual void DisposeToken(AEDesc& unneededToken);
  1094.  
  1095.     virtual MAppleObject* GetTarget(const AppleEvent& message);
  1096.  
  1097.     virtual void SetTokenObjectDisposal(MAppleObject* tokenObject, 
  1098.         Boolean needsDisposal);
  1099.     virtual Boolean GetTokenObjectDisposal(const MAppleObject*
  1100.         tokenObject);
  1101.  
  1102.     virtual MAppleObject* ResolveSpecifier(AEDesc& objectSpecifier);
  1103.  
  1104.     virtual void InstallAppleEventHandler(AEEventClass theClass,
  1105.         AEEventID theID, long refCon);
  1106.  
  1107.     static TAppleObjectDispatcher* GetDispatcher();
  1108. };
  1109. Install 
  1110. void Install();
  1111. Install is called when the dispatcher object is actually installed (at InitAppleEvent time). It’s responsible for reading the 'aedt' resources for the application and declaring the appropriate handlers to the Apple Event Manager as well as registering with the OSL. Overrides should call the inherited version of this member function 
  1112. to maintain proper functionality. This method may be overridden to provide functionality beyond that supplied by TAppleObjectDispatcher — to provide for mark tokens, for example, which are left as an exercise for the reader. (Don’cha just hate it when articles do this to you?) 
  1113. ExtractObject and StuffDescriptor 
  1114. MAppleObject* ExtractObject(const AEDesc& descriptor);
  1115. void StuffDescriptor(AEDesc& descriptor, MAppleObject* object);
  1116. One of the key abstractions provided by TAppleObjectDispatcher is the packaging of MAppleObjects into tokens for communication with the Apple Event Manager and OSL. ExtractObject and StuffDescriptor are the pair of routines that carry the responsibility for translation. ExtractObject returns the MAppleObject contained within the token descriptor, while StuffDescriptor provides the inverse function. These functions are extensively used internally, but are probably of little interest to clients. Subclasses that override one method should probably override the other as well.
  1117. HandleAppleEvent 
  1118. void HandleAppleEvent(const AppleEvent& message, AppleEvent& reply,
  1119.     long refCon);
  1120. HandleAppleEvent is called whenever the application receives an Apple event. All responsibility for distributing the Apple event to an object is held by this member function. HandleAppleEvent is rarely overridden.
  1121. AccessContainedObjects 
  1122. void AccessContainedObjects(DescType desiredClass,
  1123.     const AEDesc& container, DescType containerClass, DescType form,
  1124.     const AEDesc& selectionData, AEDesc& value, long refCon);
  1125. At times during the resolution of an object specifier, MAppleObjects are asked to return objects contained within them. AccessContainedObjects is called when the parsing engine makes that query (in other words, it’s the polymorphic counterpart of the OSL’s object accessor callback routine). The method is responsible for getting the MAppleObject container, making the appropriate inquiry, and returning the result, properly packed. AccessContainedObjects is rarely overridden.
  1126. CountObjects 
  1127. long CountObjects(const AEDesc& containerToken,
  1128.     DescType countObjectsOfType);
  1129. At times during the resolution of an object specifier, it may be helpful to find out how many of a particular object are contained within a token object. This method is called when the parsing engine makes that query (in other words, it’s the polymorphic counterpart of the OSL’s count objects callback routine). It’s responsible for finding 
  1130. the MAppleObject corresponding to the token, making the inquiry of the object, and returning the answer. 
  1131. CompareObjects 
  1132. Boolean CompareObjects(DescType operation, const AEDesc& obj1,
  1133.     const AEDesc& obj2);
  1134. At times during the resolution of an object specifier, it may be helpful to compare two objects to determine if some logic relationship (for example, less than, equal to, before, or after) holds between them. CompareObjects is responsible for making the inquiry of the appropriate MAppleObject and returning the result (in other words, it’s the polymorphic counterpart of the OSL’s compare objects callback routine). The semantics of the operation is obj1 operation obj2. So, if the compareOperator parameter were kAEGreaterThan, the semantics of the method call would be obj1 is greater than obj2. This method is rarely overridden.
  1135. DisposeToken 
  1136. void DisposeToken(AEDesc& unneededToken);
  1137. DisposeToken is called when the OSL determines that a token is no longer necessary. This commonly occurs during resolution of an object specifier. DisposeToken is responsible for acting appropriately (in other words, it’s the polymorphic counterpart of the OSL’s object disposal callback routine). For the implementation in TAppleObjectDispatcher, this means the routine checks to see if the object is marked as needing disposal, and deletes the object if necessary.
  1138. GetTarget 
  1139. MAppleObject* GetTarget(const AppleEvent& message);
  1140. GetTarget is responsible for looking at the Apple event and determining which 
  1141. object should receive it. Notably, GetTarget is used by HandleAppleEvent. The TAppleObjectDispatcher implementation sends the Apple event to the default object unless the direct parameter is an object specifier. If the direct parameter is an object specifier, it’s resolved to an MAppleObject, which is then sent the Apple event. This method is rarely overridden.
  1142. SetTokenObjectDisposal and GetTokenObjectDisposal 
  1143. void SetTokenObjectDisposal(MAppleObject* tokenObject,
  1144.     Boolean needsDisposal);
  1145. Boolean GetTokenObjectDisposal(const MAppleObject* tokenObject);
  1146. Any MAppleObject can be marked as needing disposal or not needing it. SetTokenObjectDisposal and GetTokenObjectDisposal manage the internal representation of the table that keeps track of such information. You may want to override them both (never do it one at a time) to provide your own representation.
  1147. ResolveSpecifier 
  1148. MAppleObject* ResolveSpecifier(AEDesc& objectSpecifier);
  1149. ResolveSpecifier returns the MAppleObject that corresponds to the object specifier passed as an argument. Under most circumstances, you don’t need to call this routine since it’s called automatically to convert the direct parameter of an Apple event into an MAppleObject. If, however, in the course of handling an Apple event, you find another parameter whose descriptorType is typeObjectSpecifier, you’ll probably want to resolve it through this routine. Remember that objects returned from ResolveSpecifier may need to be deleted when the application is done with them. To accomplish this, you may either stuff the object into an AEDesc by calling StuffDescriptor and then call AEDisposeToken, or ask whether the object needs to be deleted by calling GetTokenObjectDisposal and delete it if true is returned.
  1150. InstallAppleEventHandler 
  1151. void InstallAppleEventHandler(AEEventClass theClass, AEEventID theID,
  1152.     long refCon);
  1153. InstallAppleEventHandler is very rarely overridden. It’s responsible for registering an Apple event with the Apple Event Manager, notifying the manager that the application handles the Apple event. 
  1154. GetDispatcher 
  1155. TAppleObjectDispatcher* GetDispatcher();
  1156. This static member function returns the dispatcher object that’s currently installed. It’s useful for calling TAppleObjectDispatcher member functions from a global scope. 
  1157. THE 'AEDT' RESOURCE 
  1158. The last piece of the UAppleObject puzzle is the 'aedt' resource. The definition of this resource type is in the Types.r file distributed with MPW. Developers familiar with MacApp’s use of the 'aedt' resource already know how it works in UAppleObject because UAppleObject uses the same mechanism.
  1159. The 'aedt' resource is simply a list of entries describing the Apple events that an application handles. Each entry contains, in order, the event class, the event ID, and a numeric reference constant. The event class and ID describe the Apple event the application supports and the numeric constant is used internally by your application. The constant should be different for each supported Apple event. This allows your application to recognize the kind of Apple event at run time by looking at the refCon passed to DoAppleEvent. 
  1160. When installed via the Install method, a TAppleObjectDispatcher object looks at all 'aedt' resources in the application’s resource fork, registering all the Apple events in them. Thus, additional Apple event suites can be signified by adding resources 
  1161. instead of adding to one resource. For example, the Rez code to define an 'aedt' resource for the four required Apple events is as follows:
  1162. resource 'aedt' (100) {{
  1163.     'aevt', 'oapp', 1;
  1164.     'aevt', 'odoc', 2;
  1165.     'aevt', 'pdoc', 3;
  1166.     'aevt', 'quit', 4;
  1167. }};
  1168. When the Open Document Apple event ('aevt', 'odoc') is sent to the application, the refCon value to DoAppleEvent is 2. Since you’ve assigned a unique numeric constant to each different Apple event, a refCon value of 2 can be passed to DoAppleEvent only when the Apple event is Open Document.
  1169. To add the mythical foobar Apple event ('foo ', 'bar ') to the application, mapped to number 5, you may either add a line to the resource described above or add another resource: 
  1170. resource 'aedt' (101) {{
  1171.     'foo ', 'bar ', 5;
  1172. }};
  1173. EXTENDING CPLUSTESAMPLE 
  1174. So far this sounds all well and good. The theory behind adding Apple event object support holds together well on paper. The framework, UAppleObject, has been written and works. The only thing left is to put my money where my mouth is and actually use UAppleObject to demonstrate the addition of Apple events to an Apple event–unaware application. The subject of this foray into the Twilight Zone is CPlusTESample in the Sample Code folder on the Developer CD Series disc. TESample serves as the basis for adding scripting support for object model classes.
  1175. CPlusTESample is attractive for a number of reasons. First, it’s a simple application that could support some nontrivial Apple events. Second, it’s written in an object-oriented style and contains a decent design from the standpoint of separating the user interface from the engine and internal representation. Finally, it’s written in C++, a necessary evil for the use of UAppleObject.
  1176. To prove that CPlusTESample actually had the necessary flexibility to add Apple events, I began by adding font, font size, and style menus to the original sample. Adding these features required little modification to the original framework aside from the addition of methods to existing classes. Thus, I was satisfied that the underlying assumptions and framework could hold the paradigm shift of adding Apple event support.
  1177.  
  1178. In identifying the objects of the program, I chose windows and text blocks as the central object classes. If I were more gutsy, I would have attempted to actually define words and characters. However, the ancient programmer’s credo crept in — it was more work than I was willing to do for this example. Further complicating this decision was the fact that CPlusTESample is built on TextEdit. Therefore, the obvious concepts of paragraphs and words translated exceptionally poorly into the internal representation, TEHandles. Characters would have been simpler than either paragraphs or words, but I copped out and left it as an exercise for the reader.
  1179. The relationships between classes are very straightforward. Windows are contained by the null object and text blocks are contained by windows. However, since I had a concept of window, it became interesting to define various attributes contained in windows: name, bounding box, and position. So, object model classes were defined for names, bounding boxes, and positions.
  1180. Behaviors were similarly straightforward. Text blocks, names, bounding boxes, and positions had protocol for getting their data and setting their data. Thus, an Apple event could change a name or text block or could ask for a position or bounding box.
  1181. In the end, six classes were defined to implement the object model classes: TESample, TEDocument, TWindowName, TWindowBounds, TWindowPosition, and TEditText. TESample is the application class and functions as the null object. TEDocument implements the window class and is used as the internal representation of the document and all its data. The remaining four classes are ephemeral classes that refer to a specific TEDocument instance and represent the indicated feature of that instance.
  1182. From that point, it was straightforward to write methods overriding MAppleObject to provide the containment, counting, comparison, and behavior dispatching. You can check out CPlusTESample with Apple event support added on the Developer CD Series disc. 
  1183. IMPLEMENTING A CLASS 
  1184. This section shows how UAppleObject helps you write cleaner code by looking at one of the CPlusTESample classes in detail — TEditText, the text class. User testing revealed the need for a class to represent the text found inside a CPlusTESample window, so I created a TEditText class whose objects are contained within some window class. Additionally, users wanted to retrieve and set the text represented by the text class. The Apple Event Registry defines a text class that roughly resembles the text class I wanted to provide in my CPlusTESample extension. Therefore, I decided to use the Registry’s description as a basis for my TEditText class.
  1185. TEditText provides object model support for the user’s concept of text, indicating that it should inherit from MAppleObject. TEditText objects don’t contain any other objects, so there’s no need to override the CountContainedObjects or GetContainedObject methods. However, TEditText objects do respond to Apple events. The Registry says that text objects should provide access to the text data itself through the Set Data and Get Data Apple events. Therefore, TEditText should include methods to implement each Apple event and should override DoAppleEvent to dispatch an Apple event to the appropriate method. After taking all this into account, here’s what TEditText looks like:
  1186. class TEditText : public MAppleObject
  1187. {
  1188. public:
  1189.     TEditText(TEHandle itsTE);
  1190.  
  1191.     virtual void DoAppleEvent(const AppleEvent& message,
  1192.         AppleEvent& reply, long refCon);
  1193.     virtual DescType GetAppleClass() const;
  1194.  
  1195.     virtual void DoAppleGetData(const AppleEvent& message,
  1196.         AppleEvent& reply);
  1197.     virtual void DoAppleSetData(const AppleEvent& message,
  1198.         AppleEvent& reply);
  1199. private:
  1200.     TEHandle    fTEHandle;
  1201. };
  1202. The constructor is relatively simple to implement. Since CPlusTESample uses TextEdit records internally, it’s natural to implement TEditText in terms of TextEdit’s TEHandle data structure. Therefore, TEditText keeps the TEHandle to which it refers in the fTEHandle instance variable.
  1203. TEditText::TEditText(TEHandle itsTE)
  1204. {
  1205.     fTEHandle = itsTE;
  1206. }
  1207. UAppleObject requires each MAppleObject instance to describe its object model class type through the GetAppleClass method. Since all TEditText objects represent the Registry class denoted by typeText, TEditText’s GetAppleClass method is exceptionally straightforward, blindly returning the typeText constant.
  1208. DescType TEditText::GetAppleClass() const
  1209. {
  1210.     return typeText;
  1211. }
  1212. DoAppleEvent is also straightforward. It looks at the refCon parameter to determine which Apple event–handling method should be invoked. This method represents a large part of the remaining tedium for Apple event coding. Each class is responsible for translating the integer-based Apple event specifier, refCon in this example, into a polymorphic method dispatch such as the invocation of DoAppleSetData or DoAppleGetData. The nice part of this implementation is that subclasses of TEditText won’t need to implement DoAppleEvent again if all the subclass needed was the Set Data or Get Data protocol. Instead such a subclass would simply override the DoAppleSetData or DoAppleGetData method and let the C++ method-dispatching mechanisms do the work.
  1213. void TEditText::DoAppleEvent(const AppleEvent& message,
  1214.     AppleEvent& reply, long refCon)
  1215. {
  1216.     switch (refCon)
  1217.     {
  1218.     case cSetData:
  1219.         this->DoAppleSetData(message, reply);
  1220.         break;
  1221.     case cGetData:
  1222.         this->DoAppleGetData(message, reply);
  1223.         break;
  1224.     default:
  1225.         MAppleObject::DoAppleEvent(message, reply, refCon);
  1226.         break;
  1227.     }
  1228. }
  1229. DoAppleGetData and DoAppleSetData are the Apple event–handling methods of the TEditText class. To developers familiar with the traditional Apple Event Manager interfaces, these methods are the UAppleObject equivalents of what the Apple Event Manager calls Apple event handlers. Each method follows a general pattern common to most remote procedure call protocols, of which Apple events are an advanced form.
  1230. First, the Apple event–handling method reads additional information from the message Apple event. The DoAppleGetData method doesn’t happen to need any additional information because the entire meaning of the message is found in the identity of the Apple event itself. However, DoAppleSetData needs one additional piece of information — the text that should be stuffed into the object.
  1231. Next, the handler method calls GotRequiredParameters, passing the message Apple event as the sole argument. GotRequiredParameters ensures that the handler has retrieved all the information that the Apple event sender has sent. (For a discussion of why this is necessary, see Inside Macintosh Volume VI, Chapter 6.)
  1232. Third, the handler method will do whatever is necessary to perform the Apple event and create necessary reply data. The Get Data Apple event requires the TEditText object to fill the reply Apple event with the text it represents. Therefore, the DoAppleGetData method should retrieve the text contained in the TEHandle and pack it into an appropriate Apple event descriptor, putting that descriptor into the reply Apple event. In contrast to Get Data, the Set Data Apple event requires no reply, but does require that the text represented by the TEditText object be changed to reflect the text contained by the message Apple event. Thus, the DoAppleSetData method should contain code that sets the text contained in the object’s TEHandle to the text retrieved from the message Apple event. 
  1233. void TEditText::DoAppleGetData(const AppleEvent& message,
  1234.         AppleEvent& reply)
  1235. {
  1236.     // Note: This method uses no additional parameters.
  1237.  
  1238.     // Make sure we have all the required parameters.
  1239.     GotRequiredParameters(message);
  1240.  
  1241.     // Pack the text from the TEHandle into a descriptor.
  1242.     CharsHandle    theText = TEGetText(fTEHandle);
  1243.     AEDesc        textDesc;
  1244.     HLock((Handle) theText);
  1245.     OSErr theErr = AECreateDesc(typeText, (Ptr) *theText,
  1246.         GetHandleSize((Handle) theText), &textDesc);
  1247.  
  1248.     // Unlock the handle and check the error code, throwing an
  1249.     // exception if necessary.
  1250.     HUnlock((Handle) theText);
  1251.     FailOSErr(theErr);
  1252.  
  1253.     // Package the reply.
  1254.     theErr = AEPutParamDesc(&reply, keyDirectObject, &textDesc);
  1255.  
  1256.     // Dispose of the descriptor we created and check the reply from
  1257.     // packaging the reply, throwing an exception if necessary.
  1258.     OSErr ignoreErr = AEDisposeDesc(&textDesc);
  1259.     FailOSErr(theErr);
  1260. }
  1261.  
  1262. void TEditText::DoAppleSetData(const AppleEvent& message,
  1263.     AppleEvent& /* reply */)
  1264. {
  1265.     // Get the text data descriptor from the message Apple event.
  1266.     AEDesc    textDesc;
  1267.  
  1268.     FailOSErr(AEGetParamDesc(&message, keyAETheData, typeText,
  1269.         &textDesc));
  1270.  
  1271.     // Make sure we have all the required parameters.
  1272.     GotRequiredParameters(message);
  1273.  
  1274.     // Use the data in the text descriptor to set the text of TEHandle.
  1275.     HLock(textDesc.dataHandle);
  1276.     TESetText(*textDesc.dataHandle, GetHandleSize(textDesc.dataHandle),
  1277.         fTEHandle);
  1278.     HUnlock(textDesc.dataHandle);
  1279.  
  1280.     // Dispose of the text descriptor we created above.
  1281.     OSErr    ignoreErr = AEDisposeDesc(&textDesc);
  1282. }
  1283. IT'S UP TO YOU
  1284. This article set out to reveal the deep significance of Apple events and the object model and to find a strategy for developing an object-oriented framework to take advantage of the Apple event object model design. Along the way, it danced around cognitive theory and discussed how cognitive theory applies to user perception of software. You’ve seen how object programming resembles such cognitive models to a more-than-trivial degree. And you’ve seen how those similarities can be leveraged to give workable, programmable models of user concepts within Turbo WhizzyWorks II NT Pro.
  1285. You’ve also seen the difficulties presented by the Apple Event Manager interface. Although Apple event objects and the object model are unarguably tied to user models and user-centric models, the Apple Event Manager is not. The UAppleObject framework presented here works with the object model and the Apple Event Manager to reduce generic user scripting to a tedious but straightforward task. 
  1286. In the midst of all this detail, don’t forget the payoff — providing a mechanism for users to interact with your applications using a level of control and precision previously undreamed of. The rest, as they say, is in your hands. 
  1287. PRINT HINTS
  1288.     TOP 10 PRINTING MISDEMEANORS
  1289.     
  1290. PETE (“LUKE”) ALEXANDERIn my last column (in develop Issue 10), I talked about the “Top 10 Printing Crimes” that would cause you and your application serious headaches during print time. Here I’ll list the “Top 10 Printing Misdemeanors.” A printing misdemeanor will cause minor to major printing problems on different devices. Usually, you’ll be able to get output onto a page, but it won’t necessarily be what you want or where you want it.
  1291. Here’s the list:
  1292.     10.  Using CopyMask and CopyDeepMask with the LaserWriter.
  1293.     9.     Using the obsolete spool-a-page, print-a-page method.
  1294.     8.     Not being very careful when using SetOrigin with the LaserWriter.
  1295.     7.     Creating pictures while the Printing Manager is open.
  1296.     6.     Not having all your data ready for the Printing Manager when you open it.
  1297.     5.     Making assumptions about the imageable area.
  1298.     4.     Using variables from Laser Prep (that is, md).
  1299.     3.     Checking wDev for the wrong reasons.
  1300.     2.     Accessing print record fields that are used internally.
  1301.         1.     Adding printing to your application four weeks before going final.
  1302. Most of these misdemeanors are easily avoided if you plan ahead. Let’s take a look at the problems and the solution to each one. 
  1303. SOLUTIONS TO THE MISDEMEANORS
  1304. 10.    Using CopyMask and CopyDeepMask with the LaserWriter. 
  1305. It’s not possible to directly print to a LaserWriter an image that was created with CopyMask or CopyDeepMask, because these calls aren’t saved in pictures and they don’t go through the stdBits QuickDraw bottleneck. The image’s data must be recorded in the picture or go through the stdBits bottleneck in order for the LaserWriter driver to be able to image the data on the printer.
  1306. Solution: You can create your image in an off-screen world using CopyMask and CopyDeepMask to your heart’s content. When you’re ready to print your image, CopyBits it directly to the LaserWriter’s grafPort using srcCopy.
  1307. 9.     Using the obsolete spool-a-page, print-a-page method. 
  1308. There are still a few applications using the spool-a-page, print-a-page method of printing a document. This approach is no longer required unless you’re printing from a Macintosh that doesn’t have a hard drive. Otherwise, it’s a bad idea; it has major drawbacks in the areas of speed and user happiness. 
  1309. The idea of this method was to print each page of a document as a separate job. This was required in the early Macintosh days because disk space was at a premium. It prevented a document from filling up the entire disk and never printing a page. But in this age of hard disks, it’s no longer needed.
  1310. Opening and closing the Printing Manager for each page could result in a serious speed penalty. And it     
  1311.  
  1312. could make your users very unhappy when printing to a shared printer; it’s possible to have another user grab the printer before you do, thereby intermixing your pages with theirs.
  1313. Solution: Don’t use the spool-a-page, print-a-page technique. Instead, use the method described in the Technical Note “A Printing Loop That Cares . . .”.
  1314. 8.    Not being very careful when using SetOrigin with the LaserWriter. If you’re using SetOrigin to change the coordinate system when sending direct PostScript™ code to the LaserWriter, you’ll run into trouble when printing in the foreground versus the background.
  1315. The PostScript LaserWriter drivers 4.0 through 5.2 handle SetOrigin differently when background printing is enabled. 
  1316. •    When background printing is disabled and the application calls SetOrigin, QuickDraw responds by adjusting the portRect of the printer driver’s grafPort. Since SetOrigin doesn’t cause any grafProcs to run (because no drawing occurs), the printer driver doesn’t see the effect of this call until the next QuickDraw call is made (for example, DrawString or LineTo). At this point, the driver notices the change in the portRect and updates its internal origin. From then on, all QuickDraw and PostScript graphics are localized to the new origin.
  1317. •    When background printing is enabled, QuickDraw is playing back a picture that was spooled earlier. When SetOrigin is encountered while DrawPicture is playing the picture, the grafPort’s portRect isn’t updated. Instead, QuickDraw keeps the current origin cached and offsets each graphic on the fly. Since the portRect wasn’t modified, the printer driver doesn’t see the SetOrigin call. Although all QuickDraw objects are still localized correctly (by QuickDraw), PostScript graphics don’t move to the new origin.
  1318. In LaserWriter drivers 6.0 and later, the call to SetOrigin is a problem only on the first page that’s 
  1319.     spooled. After the first page, the driver looks at the grafPort’s coordinates and then records the SetOrigin information correctly by inserting a picture comment into the spool file. This enables PrintMonitor to realize when the origin changes. Unfortunately, the driver never records the changes produced by a SetOrigin call when it’s in the stdBits QuickDraw bottleneck.
  1320. Solution: In general, using SetOrigin doesn’t buy you much, and it can get you in a lot of trouble. There are still a few printer drivers that don’t handle the call correctly. Avoid using SetOrigin if possible. 
  1321. If you use SetOrigin when sending direct PostScript code, use the techniques described in the Technical Note “Position-Independent PostScript” to ensure that all the PostScript code your application creates is position independent. To get the LaserWriter driver to realize as soon as possible that you’ve changed the coordinate system, you can send the following code:
  1322. PicComment (PostScriptBegin, 0, nil);
  1323. PicComment (PostScriptEnd, 0, nil);
  1324. This is a little weird, but it works because the two PicComment calls go through the stdBits QuickDraw bottleneck, which is where the driver checks and updates the coordinate system as required.
  1325. 7.    Creating pictures while the Printing Manager is open. 
  1326. Some applications use a picture to collect all their QuickDraw objects before sending them on to the printer. This approach is OK unless the Printing Manager has already been opened by a call to PrOpen. The most noticeable problems are memory use and floating picture comments.
  1327. The memory problem can be very evident if you’re printing to a printer driver that requires a lot of memory. Between your memory use and the printer driver’s, there might not be enough memory available to meet everyone’s appetite. Remember, there isn’t a magical amount of memory that will guarantee that your application will print successfully.    
  1328.  
  1329. The other significant problem you might encounter is floating picture comments. When this occurs, the picture comments sent by your application will be recorded out of order, which will usually cause your image to print its objects out of order. 
  1330. Solution: Read the Technical Note “Pictures and the Printing Manager” before you start to use pictures at print time. Better yet, don’t create a picture when the Printing Manager is open.
  1331. 6.     Not having all your data ready for the Printing Manager when you open it.
  1332. There aren’t too many things you can do to speed up printing, but having data ready for the Printing Manager when you open it is one of them. If you open the Printing Manager and then go off to collect data you want to print, your printing time could increase dramatically. You also run the risk of timing out the print job because you don’t send data to a networked printer fast enough or your print job takes too long to complete.
  1333. Solution: When you open the Printing Manager, have all your data collected and ready to send to the printer. Make sure the data is formatted for the current printer (see the next misdemeanor for additional details).
  1334. If your application needs to perform a lot of data collection or preparation (as would a database application), consider spooling all your information to disk as pictures. This is especially useful when you don’t know how long it will take to gather the data for a particular page. To use this approach, you would open up a file and write out each page as a picture (as the Printing Manager does), spool everything to disk, and then send the pictures to the printer driver. Printing will be really fast! But be sure not to commit misdemeanor 7 above, and note that this should not be the only way your application prints; since you may not have enough disk space, you should make it an option in a Preferences or Print dialog.
  1335. Having your data ready to go when you open the Printing Manager ensures that you’ll print as fast as    possible and avoid timeout problems. And it will make your application a friendly networked printer user, compared to grabbing the printer on the network and hogging it while your application collects data. 
  1336. 5.     Making assumptions about the imageable area. 
  1337. Some applications make assumptions about the imageable area (the page rectangle) at print time. This can cause some serious speed and clipping problems. If any part of your image (which may contain text, QuickDraw objects, bitmaps, or pixMaps) falls outside the page rectangle, the printer driver will need to clip it. This will slow down the printing process and you won’t get the output you want. The imageable area for each printer is slightly different; this is actually a good thing, since it allows the printer driver to take full advantage of the printer’s capabilities.
  1338. About half of the printing game is reformatting your image to work for the currently selected printer. This problem is most noticeable when you print to a film recorder an image that was set up for a LaserWriter. If you don’t reformat the image, you won’t get the results you want; because of the higher resolution of the film recorder (1500 versus 300 dpi), you’ll get a micro-image and you’ll waste film. Also, most film recorders print only in landscape orientation.
  1339. Solution: Since each printer has a slightly different imageable area, you should format your image to this area. Before sending your data to the printer, you should format it to rPage, the page rectangle for the current printer. rPage lives in the TPrInfo record within the print record. However, be careful; as mentioned in the previous misdemeanor, you should have all your data ready to send (including all formatting) before opening the Printing Manager. Open the Printing Manager, get the dimension for rPage, close the Printing Manager, format your data, open the Printing Manager again, and print. 
  1340. One approach for saving your data within your application to help you format it at print time is to specify the location of each object on the page as a percentage of distance (as opposed to pixels). For    
  1341.  
  1342. example, you could specify an object to be 10% from the top and left margins. You would then always be able to place the object in the correct position for all printers no matter what the resolution.
  1343. 4.     Using variables from Laser Prep (that is, md). Using operators from the LaserWriter driver’s dictionary md is a classic way of causing your application compatibility problems when a new LaserWriter driver is released. Some developers do this to achieve additional PostScript functionality at print time. The problem is that when Apple releases a new LaserWriter driver it usually changes a few of the operators in md. This will then break code that depends on md. It’s an even bigger problem if you save this information in pictures. When a new LaserWriter driver is released, none of these pictures created by your users will be able to be printed.
  1344. Solution: Don’t use any of the operators defined within md in your printing code. This has been around for a long time as a compatibility issue; take a look at the Technical Note “Using Laser Prep Routines” for the historical data. 
  1345. If you decide to jump off the cliff and use operators in md, you owe it to your users to check the existence of an operator before you use it. This piece of PostScript code will do the trick:
  1346. userdict /md known 
  1347. {
  1348.     md /bu known {myBU} if
  1349. } if
  1350. In this example, we’re checking for the existence of bu before we replace it with our newly defined operator, myBU. If the bu operator didn’t exist, we’d do the right thing (that is, we’d still be able to print).
  1351. 3.     Checking wDev for the wrong reasons.
  1352. The printer type (such as LaserWriter or StyleWriter) is stored as an unsigned char in the high byte of the print record’s wDev field (in the TPrStl record). Each printer driver has a unique     wDev, and there are now over 142 wDevs in the world. That’s quite a few printers available for your application to print to. 
  1353. If you’re checking wDev to see which type of printer you’re talking to, you could end up very disappointed. Relying on wDev to make decisions at print time makes your application completely device dependent. What do you do when you get a wDev you don’t know about? You have to make assumptions about the printer, and if you make a bad decision, you won’t get the output you expect. This isn’t fair to your users; they should be able to print to any printer that’s connected to the Macintosh. 
  1354. When we were developing the StyleWriter printer, we had some serious compatibility problems with a few of the major applications. They assumed that any device with a resolution greater than 300 dpi must be a PostScript printer. They sent only PostScript code to the StyleWriter, which didn’t work out too well, since of course the StyleWriter doesn’t understand PostScript. 
  1355. Solution: Don’t check wDev, with a couple of exceptions. One exception is that you should check wDev and the printer driver version if you need to work around a bug in the printer driver. This is the only method available to determine whether you’re dealing with a particular printer driver. Checking the driver version by calling PrDrvrVers is important, because when the bug is fixed, you can remove your fix and let the driver do the work. Another exception is that you can check wDev after you’ve created a valid print handle (by calling PrintDefault) to see if the user has changed the printer type (for example, a LaserWriter to a StyleWriter) via the Chooser. In any case, be sure that when you do check wDev, you check it as an unsigned char value.
  1356. 2.     Accessing print record fields that are used internally.
  1357. You may notice that this is similar to the number 2 printing crime in the Print Hints column in Issue 10. There I emphasized the crime of accessing private     
  1358. (“PT”) fields that you may come across when prowling around in the print record. Also likely to cause inconsistent results is the misdemeanor of accessing other fields in the print record that are used internally (or unused). To make this even clearer, I’ll tell you just what print record fields you can read and write.
  1359. The print record is chock full of information. It’s an application’s playground during printing. It’s also used by printer drivers to hold information about the current print job. Since each printer has slightly different needs, each one uses these fields differently. The public API documented in Inside Macintosh is the same, but the rest of the print record is free domain for the printer driver to use as it sees fit. 
  1360. Setting a field that the printer driver doesn’t expect you to touch can cause big problems for your application. This is one of the reasons why printer drivers have compatibility problems when they’re being developed, and why they take so long to create.
  1361. Solution: Don’t set any fields in the print record besides iLstPage, iFstPage, pIdleProc, pFileName, and iFileVol. If you do, you’re running a serious compatibility risk with new printer drivers and printers you don’t have access to during your test cycle. See the Technical Note “A Printing Loop That Cares . . .” for details about setting and using iLstPage and iFstPage, and the Technical Note “Me and My pIdle Proc (or how to let users know what’s going on during print time . . .)” for details about setting pIdleProc. 
  1362. Don’t read any fields in the print record besides the ones you can set and the fields rPage, rPaper, iCopies, iVRes, iHRes, bjDocLoop, and bFileVers. (You can also read the TPrStatus record returned by prPicFile.) 
  1363. 1.     Adding printing to your application four weeks before going final.
  1364. This too is similar to a printing crime in Print Hints in Issue 10 — but there has been a change, to four weeks instead of two. I can’t emphasize this enough. Since my last column, a couple of developers have    come to us with major printing problems and a shipping deadline only a few weeks away. They had just started to add printing to their applications.
  1365. Solution: Designing printing at the beginning — not the end! — of your application’s development cycle is the solution to most of your printing headaches. Printing performance can make or break an application. You should convince the right people in your organization that printing is just as important as any other feature. There are a few pitfalls in the current printing architecture, but most of these problems can be avoided without a lot of work — if you design printing into your application from the start. 
  1366. So please, stay out of trouble and avoid the printing crimes and misdemeanors. You’ll be a happy printing developer and your users will also be delighted.
  1367.     REFERENCES
  1368.     •    Inside Macintosh Volume II (Addison-Wesley, 1985),
  1369.     Chapter 5, “The Printing Manager,” pages 150–151.
  1370.     •    “Print Hints: Top 10 Printing Crimes” by Pete (“Luke”)
  1371.     Alexander, develop Issue 10.
  1372.     •    “Print Hints From Luke & Zz: CopyMask,
  1373.     CopyDeepMask, and LaserWriter Driver 7.0” by Pete
  1374.     (“Luke”) Alexander, develop Issue 8.
  1375.     •    Macintosh Technical Notes “The Effect of 
  1376.     Spool-a-page/Print-a-page on Shared Printers”
  1377.     (formerly #125), “Using Laser Prep Routines” (formerly
  1378.     #152), “A Printing Loop That Cares . . .” (formerly
  1379.     #161), “Position-Independent PostScript” (formerly
  1380.     #183), “Me and My pIdle Proc (or how to let users know
  1381.     what’s going on during print time . . .)” (formerly
  1382.     #294), and “Pictures and the Printing Manager”
  1383.     (formerly #297). 
  1384.     
  1385.  
  1386. ANOTHER TAKE ON GLOBALS IN STANDALONE CODE
  1387. KEITH ROLLIN
  1388. While MPW is great for developing applications, it provides little support for creating standalone code resources such as XCMDs, drivers, and custom window, control, and menu definition procedures, especially if you have nonstandard needs. Two roadblocks developers immediately notice are the inability to create more than 32K of object code and the lack of access to global variables. This article addresses the latter issue. 
  1389. The Macintosh Technical Note “Stand-Alone Code, ad nauseam” (formerly #256) does an admirable job of explaining what standalone code is and discussing the issues involved in accessing global variables from within it. I’ll describe the solution proposed in that Tech Note later in this article, but you may also want to look over the Note before reading further. 
  1390. It’s important to realize that the Tech Note discusses just one possible solution to the problem of using global variables in standalone code. This article presents another solution, in the form of the StART package included on the Developer CD Series disc. Along the way, I’ll talk a bit about what the issues are, describe how users of Symantec’s THINK environments address the problem, recap the solution presented in the Tech Note, and show how to use MPW to implement a THINK-style solution. I’ll also take a look at the advantages and disadvantages of each approach, allowing you to choose the right solution for your needs. 
  1391. Note that the StART package is a solution for MPW users and that it assumes a lot about how MPW currently works. It’s possible that you may not be able to use the StART package to develop standalone code that uses globals with future versions of MPW, although code already created with StART will, of course, continue to work.
  1392. WHAT IS STANDALONE CODE?
  1393. Standalone code is merely executable code that receives little to no runtime support from the Macintosh Operating System. The advantage of standalone code resources 
  1394. is that they can be quickly loaded into memory, executed, and dismissed without the overhead of setting up a full-fledged runtime environment for them. In addition, standalone code can execute without affecting the currently running application or relying on it for any services. This makes such resources ideal for easily extending the system’s or your application’s functionality. By creating the right kinds of standalone code resources, you can change how controls or windows appear, or you can dynamically extend the capabilities of your application. 
  1395. Table 1 shows a list of the most common system- and application-defined standalone code resources.
  1396. Table 1
  1397. Kinds of Standalone Code Resources
  1398. Resource Type    Resource Function
  1399.     *    ADBS    ADB device driver
  1400.     *    adev    AppleTalk link access protocol
  1401.         boot    Boot blocks
  1402.         CACH    System RAM cache code
  1403.     *    CDEF    Custom control definition
  1404.     *    cdev    Control panel device
  1405.     *    dcmd    Debugger extension
  1406.         dcmp    Resource decompressor
  1407.     *    DRVR    Device driver
  1408.     *    FKEY    Function key
  1409.         FMTR    3.5-inch disk formatting
  1410.     *    INIT    System extension
  1411.         itl2    Localized sorting routines
  1412.         itl4    Localized time/date routines
  1413.     *    LDEF    Custom list display definition
  1414.     *    MBDF    Custom menu bar definition
  1415.     *    MDEF    Custom menu definition
  1416.     *    mntr    Monitors control panel extension
  1417.         PACK    System package
  1418.     *    PDEF    Printer driver
  1419.         PTCH    System patches
  1420.         ptch    System patches
  1421.     *    rdev    Chooser device
  1422.         ROvr    ROM resource override
  1423.     *    RSSC    Resource editor for ResEdit
  1424.         SERD    Serial driver
  1425.     *    snth    Sound Manager synthesizer
  1426.     *    WDEF    Custom window definition
  1427.     *    XCMD    HyperCard external command
  1428.     *    XFCN    HyperCard external function
  1429. Note: Items marked with an asterisk are ones that you might create for your own application, extension, driver, or whatever. The rest are reserved for the system.
  1430. Standalone code differs from the executable code that makes up an application, which has a rich environment set up for it by the Segment Loader. Let’s take a look at an application’s runtime environment so that we can better understand the limitations we must overcome to implement standalone code. 
  1431. An application runs in a section of memory referred to as its partition. Figure 1 shows the layout of an application partition. A partition consists of three major sections. At the top of the partition is the application’s A5 world, consisting of the application’s global variables, the jump table used for intersegment function calls, and 32 bytes of application parameters (see “Application Parameters”). This area of memory is called the A5 world because the microprocessor’s A5 register points into this data and is used for all access to it. Immediately below the A5 world is the stack, the area of memory used to contain local variables and return addresses. The stack grows downward toward the heap, which occupies the rest of the partition. The heap is used for all dynamic memory allocation, such as blocks created by NewHandle and NewPtr. Everything we see in Figure 1 — the heap (with a valid zone header and trailer), the stack, and the filled-out global variables and initialized jump table — is created by the Segment Loader when an application is launched.
  1432. Figure 1
  1433. An Application Partition
  1434. This is the application’s domain, and none shall trespass against it. And therein lies the conflict between applications and standalone code: Executing code needs to use the A5 register to access its global variables, but an application’s use of A5 prevents any standalone code from using it with impunity. Additionally, the A5 world is created by the Segment Loader when an application is launched. Since standalone code is not “launched” (instead, it’s usually just loaded into memory and JSRed to), it doesn’t get an A5 world, even if A5 were available. We must solve these two problems 
  1435. APPLICATION PARAMETERS 
  1436. Not much is known about the mysterious 32 bytes directly above A5 known as application parameters. Figures 9 and 10 on pages 19 and 21 of Inside Macintosh Volume II indicate their existence, but the description simply says that “they’re reserved for use by the system.” We know that the first four bytes contain a pointer into the QuickDraw globals, but that’s about it. Some MPW glue routines use some of the other bytes, but that use is undocumented. In any case, the application parameters seem pretty important. As you’ll see later, we make sure our standalone code resources support them. 
  1437. — the contention for A5 and the need to set up some sort of global variable space — in order to use globals in standalone code.
  1438. THE THINK SOLUTION 
  1439. For years, users of THINK C and THINK Pascal have been able to use global variables in their CDEFs, LDEFs, drivers, and other types of standalone code. THINK has solved the problem of A5 contention by compiling standalone code to use the A4 register for accessing globals, leaving A5 untouched. Their solution to the need to set up global variable space is simply to attach the globals to the end of the standalone code, again leaving the application’s A5 world untouched. 
  1440. Figure 2 shows how standalone code created by a THINK compiler looks, both on disk and in memory. If the code was created with the C compiler, which allows preinitialized global variables, the global variable section contains the initial values. If the code was generated by the Pascal compiler, which sets all global variables to zero, the entire global section simply consists of a bunch of zeros (kind of like some guys I used to know in high school).
  1441. This is in contrast to the way globals are stored on disk for applications. MPW, for instance, uses a compressed data format to represent an application’s globals on disk. When the application is launched, a small bit of initialization code is executed to read the globals from disk, expand them, and write them into the application global variable space in its A5 world.
  1442. Standalone code created by a THINK compiler accesses global variables by using 
  1443. A4-relative instructions. Because the use of the A4 register is ungoverned, such standalone code must manually set up A4 so that it can be used to reference its global variables. This setup is done by some macros provided by the THINK headers: RememberA0 and SetupA4. (It’s called RememberA0, and not RememberA4, because the macro has to store the value in the A0 register temporarily.) When the standalone 
  1444.  
  1445. Figure 2
  1446. Format of a Standalone Code Resource Created by a THINK Compiler
  1447. code is finished and is about to return to its caller, it must call RestoreA4 to restore the value that was in A4 before the standalone code was called. 
  1448. The solution provided by THINK offers many advantages: 
  1449. •    It’s simple to use. Making sure you surround the entry point of your standalone code with the appropriate macros is easy, and the macros don’t require any tricky parameters. Just type them in and you’re done. 
  1450. •    The THINK development systems automatically insert a little bit of magic code at the beginning of standalone code resources that make the setting up of A4 as transparent as possible. 
  1451. •    THINK’s use of A4 means that A5 is totally undisturbed, and hence A5 continues to point to a valid A5 world with, presumably, an initialized set of QuickDraw globals. This means that standalone code can make Toolbox calls without a second thought (or even much of a first thought, for that matter). 
  1452. •    Because the globals are attached to the standalone code, when 
  1453. the memory allocated to the standalone code resource is 
  1454. disposed of (for example, when the process that loaded it calls ReleaseResource on the segment), the globals are removed as well.
  1455. There are at least three disadvantages to THINK’s approach, however:
  1456. •    Since A4 is now pulling duty as the global variable reference base, fewer registers are available for calculating expressions, caching pointers, and so on. This means that the code generated is less efficient than if A5 were used for referencing globals.
  1457.  
  1458. •    The globals are stored on disk in an uncompressed format, a fact you should be aware of before cavalierly declaring those empty 20K arrays. 
  1459. •    The resources holding the standalone code must not be marked as purgeable, or the global variables will be set back to their original values when the resource is reloaded. 
  1460. A fourth disadvantage could be that the combined size of the executable code and the global variables must be less than 32K. However, this is somewhat ameliorated by THINK’s support of multisegmented standalone code. 
  1461. THE TECH NOTE SOLUTION 
  1462. Users of THINK development systems have their solution for accessing global variables in standalone code. MPW users, however, don’t have an immediately obvious solution. First, MPW’s compilers don’t have the option of specifying that A4 should be used to access global variables. Second, the MPW linker is written to create a compressed block of data representing the global variables and to place that block of data off in its own segment. Because A4 can’t be used to access globals, and because the globals aren’t attached to the end of the standalone code resource, MPW users don’t have the slick solution that THINK users do.
  1463. A possible alternative was presented to MPW users a couple of years ago with the publication of the Technical Note “Stand-Alone Code, ad nauseam.” Let’s take a quick look at that approach, and then compare it with THINK’s solution.
  1464. Let’s start by examining the format of a simple application, shown in Figure 3. This is the format that MPW is designed to create, with any deviance from the standard formula being cumbersome to handle.
  1465. This application has three segments. CODE 0 contains the information used by the Segment Loader to create the jump table, the upper part of an application’s A5 world. CODE 1 contains executable code, and usually contains the application’s entry point. CODE 2 contains the compressed data used to initialize the global variable section of the application’s A5 world, along with a little bit of executable code that does the actual decompressing. This decompression code is automatically called by some runtime setup routines linked in with the application. The purpose of the call to UnloadSeg(@_DataInit) in MPW programs is to unload the decompression code along with the compressed data that’s no longer needed. 
  1466. The solution proposed in the Tech Note is to use a linker option that combines segments 1 and 2. At the same time, the Note provides a couple of utility routines that create a buffer to hold the global variables and that decompress the variables into the buffer. Figure 4 shows what standalone code looks like when it’s running in memory.
  1467. Figure 3
  1468. Format of a Simple Application Created by MPW
  1469. Figure 4
  1470. Format of a Standalone Code Using the Tech Note Method
  1471. When the standalone code is called, it’s responsible for creating and initializing its own A5 world. It does this by calling OpenA5World, which is directly analogous to THINK’s SetupA4 macro. OpenA5World creates the buffer shown on the right in Figure 4, sets A5 to point to it, and calls the decompression routines to fill in the buffer. When the standalone code is ready to exit, it must call CloseA5World to deallocate the buffer and restore the original value of A5. 
  1472. Note that this approach has an immediate disadvantage compared to the THINK approach. Because the global variables buffer is deallocated when the code exits back to the caller, all values that were calculated and stored in global variables are lost. This makes the OpenA5World/CloseA5World solution good if you simply want to use global variables in lieu of passing parameters, but lousy if you’re trying to maintain any persistent data.
  1473. Fortunately, the Tech Note also presents a slight variation on the above solution that doesn’t require that the global variables buffer be deallocated when the standalone code exits. However, the solution requires a little help from the host application. When the standalone code exits, it has two problems to consider. The first is that it must find some way to maintain a reference (usually a handle) to the buffer holding the global variables. After all, where can the standalone code store this reference itself? It can’t store it in a global variable, because this reference will later be used to recover our global variables buffer. It can’t store the reference in a local variable, because local variables are destroyed once the function that declares them exits.
  1474. The second problem that must be solved when creating a solution that doesn’t require flushing the global variables is that of knowing when it actually is time to dispose of them. Globals accessed by THINK code resources are attached to the segments themselves, which means that they’re disposed of at the same time as the code resource itself. What happens if the caller of a standalone code resource created using the OpenA5World technique decides that it no longer needs that resource? If it simply calls ReleaseResource on the resource, the global variables used by the standalone code will be stranded in the heap. This is known as a memory leak, and it is very bad. The block of memory holding the global variables is no longer referenced by any code, and there’s no way to recover a reference to them. That block of memory will never be disposed of and will waste memory in the heap. 
  1475. The approach that the Tech Note takes to solving both of these problems is to require the help of the caller (usually the host application). First, the caller must agree to maintain the reference to the standalone code’s global variables buffer. After the buffer is created, the reference to it is passed back to the caller. The next time the standalone code is called, and all subsequent times, the caller passes that reference back to the standalone code, which then uses that reference to recover its global variables and reset A5 the way it likes it. Additionally, the caller must agree to notify the standalone code when it’s about to go away. When the standalone code receives that notification, it takes the opportunity to dispose of the global variables buffer.
  1476. Our brief recap of the Tech Note outlines a workable approach that provides a few advantages over the solution provided by THINK:
  1477. •    The on-disk representation of the standalone code is usually smaller, because the combination of the compressed data and decompression routines of MPW is often smaller than the raw data generated by THINK. 
  1478. •    Because the executable code and global variables are allocated in their own buffers, each of which can be 32K in length, you can create larger code resources and define more global variables. (This does not take into account the partial advantages provided by THINK’s multisegmented standalone code.) 
  1479. •    Because MPW doesn’t use it to access the globals, the A4 register can be used to generate more efficient object code. 
  1480. •    Since the globals are stored separately from the standalone code, the resource holding the standalone code can be marked as purgeable. 
  1481. •    The two blocks of memory holding standalone code and global variables can be locked or unlocked separately from each other, providing greater memory management flexibility.
  1482. There are, however, some disadvantages to the OpenA5World approach. The major disadvantage concerns the persistence of the global variables buffer. Either this buffer must be deallocated every time the code resource is exited, or the help of the caller must be elicited to maintain the reference to the buffer and to tell the standalone code when the buffer must be deallocated. If you’re not in a position to define the responsibilities of the caller (for instance, if you’re writing a WDEF), this disadvantage could be quite serious. 
  1483. The second disadvantage concerns the reuse of the A5 register. Once the standalone code changes A5 from pointing to the caller’s A5 world to pointing to the standalone code’s globals, A5 no longer points to a valid set of QuickDraw globals. This can easily be solved by calling InitGraf early in the standalone code, but some problems may still exist. For instance, what if the standalone code needed to draw something in the current port (as an LDEF would need to do)? The GrafPtr of the port to be used is back in the caller’s A5 world. Once we switch over to the standalone code’s A5 world, we no longer know what port to draw into. This problem is briefly alluded to in the Tech Note, but it’s not directly addressed. 
  1484. THE START SOLUTION 
  1485. It’s possible to combine the advantages of the two approaches we’ve seen so far, while at the same time eliminating some of the disadvantages. The idea behind the hybrid approach I’ll now present is to con MPW into creating a standalone code resource that has the same layout as one created by THINK. Specifically, instead of being stored in a separate buffer, the globals will be tacked onto the end of the code resource. This eliminates much of the reliance the standalone code has on the caller, and, as you’ll see later, still allows us to create 32K worth of object code and 32K of global data.
  1486. As we saw when discussing the Tech Note approach, we need to get MPW to take the stuff it normally puts in an application and convert it to a standalone code resource. The OpenA5World solution used a linker option to accomplish this. My solution uses a custom MPW tool instead.
  1487. Let’s begin by taking a look at what we’ll end up with, and then determine what it 
  1488. will take to get there. First, the standalone code will access its global variables by using the A5 register; there’s no way around that. Even if we were to pass the object code through a postcompilation tool that converted all A5 references into A4 references, there’s no way we could take care of the cases where the compiler generates code that uses A4 for other purposes. Therefore, this solution still uses A5 for accessing globals.
  1489. Second, the globals will be tacked onto the end of the standalone code resource, just as they are with THINK’s solution. This means that the globals will be in a known and easily determined location at all times, relieving us from having to rely on the caller to maintain our globals. When doing this, we inherit the problem THINK code has with not being purgeable, but that’s a small price to pay for the ease of use we get in return.
  1490. Third, the globals will be in expanded format. The approach taken in the Tech Note requires that our standalone code carry around the baggage of the decompression routines, as well as the compressed data, long after they’re no longer needed. Using pre-expanded data means a larger on-disk footprint, but again, this is a small price to pay, especially if the in-memory footprint is more of an issue (and it usually is).
  1491. Finally, we’ll need routines that calculate and set our A5 value when we enter our standalone code, and that restore A5 when we leave. These routines are analogous to the macros THINK uses and to the OpenA5World and CloseA5World routines of the Tech Note solution. Figure 5 shows how our standalone code resource will end up looking, both on disk and in memory.
  1492. My system is called StART, for StandAlone RunTime. It consists of two parts: an MPW tool called MakeStandAlone that converts a simple program like the one shown in Figure 3 into a standalone code resource, and a small library file with accompanying header files for Pascal and C. 
  1493. To show how these pieces work together, let’s take a small sample that uses a global variable, and build it using the StART tools. The sample we’ll use is the Persist.p  
  1494.  
  1495. Figure 5
  1496. Format of Standalone Code Using StART Techniques
  1497. program included in the Tech Note. Following is a version of the file, modified to make calls to the StART library. 
  1498. UNIT Persist;
  1499. { This is a standalone module that maintains a running total of the }
  1500. { squares of the parameters it receives.                            }
  1501.  
  1502. INTERFACE
  1503.     USES Types, StART;
  1504.     FUNCTION Main(parm: Longint): Longint;
  1505. IMPLEMENTATION
  1506.     { Define global storage to retain a running total over multiple }
  1507.     { calls to the module.                                          }
  1508.     VAR
  1509.         accumulation:        Longint;
  1510.     FUNCTION Main(parm: Longint): Longint;
  1511.         VAR
  1512.             saved:                SaveA5Rec;
  1513.         BEGIN
  1514.             UseGlobals(saved);
  1515.             accumulation := accumulation + (parm * parm);
  1516.             Main := accumulation;
  1517.             DoneWithGlobals(saved);
  1518.         END;
  1519. END.
  1520. This very simple sample performs the useless function of taking the number you pass it, squaring it, adding the result to a running total, and returning that total. UseGlobals is the StART routine that enables us to access our global variables (in this case, the lone variable named accumulation), returning the value of the caller’s A5. After we’ve performed our mathematical wizardry, we close up shop by calling a second StART routine, DoneWithGlobals, to restore the previous A5 value. 
  1521. Following is the makefile for Persist.p.
  1522. Persist            ƒƒ Persist.p.o Persist.make StARTGlue.a.o
  1523.     Link    StARTGlue.a.o ∂
  1524.             Persist.p.o ∂
  1525.             "{Libraries}Runtime.o" ∂
  1526.             "{PLibraries}PasLib.o" ∂
  1527.             -sn PASLIB=Main ∂
  1528.             -o Persist
  1529.     MakeStandAlone Persist -restype CUST -resnum 129 -o Persist.rsrc
  1530.  
  1531. Persist.p.o        ƒ Persist.p Persist.make
  1532.     Pascal Persist.p
  1533. This makefile contains a couple of interesting things that are worth examining. The first point to note is that we link with a file called StARTGlue.a.o. This file contains a few useful routines, including UseGlobals and DoneWithGlobals. It also contains a special header routine that performs some crucial setup. This setup needs to be performed before any of our custom code can be executed, so StARTGlue.a.o should be the first file in the link list. 
  1534. The second interesting thing about the makefile is the statement -sn PASLIB=Main. Recall that MakeStandAlone requires a file that contains the resources shown in Figure 3 in order to perform its magic. Specifically, MakeStandAlone demands that there be only three segments with a single entry point each into CODE 1 and CODE 2. However, when we link with PasLib.o, we create a fourth segment called PASLIB. We therefore get rid of this segment by merging it with the rest of our executable code in CODE 1, the Main segment. 
  1535. After linking and running the resulting file through the MakeStandAlone tool, we’re left with a resource containing standalone code that sets up and uses its own set of global variables. Following are highlights from the Persist sample shown above. Some routines have been removed, since we’ll be examining them in depth later. 
  1536. Entry
  1537. +0000    00000     BRA.S    Entry+$0014
  1538. +0002    00002     DC.B        $0000                        ; flags
  1539. +0004    00004     DC.B        $43555354                    ; resource type (CUST)
  1540. +0008    00008     DC.B        $0081                        ; resource ID (129)
  1541. +000A    0000A     DC.B        $0000                        ; version
  1542. +000C    0000C     DC.B        $00000000                    ; refCon
  1543. +0010    00010     DC.B        $00000000                    ; cached offset to globals
  1544. +0014    00014     BRA        MAIN
  1545.  
  1546. [ UseGlobals, DoneWithGlobals, GetSAA5, and CalculateOffset removed ]
  1547.  
  1548. MAIN                                                                ; from Persist.p
  1549. +0000    000076    LINK        A6,#$FFF8
  1550. +0004    00007A    PEA        -$0008(A6)                    ; UseGlobals(save);
  1551. +0008    00007E    JSR        UseGlobals
  1552. +000C    000082    MOVE.L    $0008(A6),-(A7)            ; parm * parm
  1553. +0010    000086    MOVE.L    $0008(A6),-(A7)
  1554. +0014    00008A    JSR        %I_MUL4
  1555. +0018    00008E    MOVE.L    (A7)+,D0
  1556. +001A    000090    ADD.L    D0,-$0004(A5)                ; add to accumulation
  1557. +001E    000094    MOVE.L    -$0004(A5),$000C(A6)    ; return as function result
  1558. +0024    00009A    PEA        -$0008(A6)                    ; DoneWithGlobals(save);
  1559. +0028    00009E    JSR        DoneWithGlobals
  1560. +002C    0000A2    UNLK        A6
  1561. +002E    0000A4    MOVE.L    (A7)+,(A7)
  1562. +0030    0000A6    RTS
  1563.  
  1564. [ %I_MUL4 removed ]
  1565.  
  1566. Globals
  1567. +0000    000E4     DC.W        $0000, $0000                ; global var accumulation
  1568. +0004    000E8     DC.W        $0000, $0000                ; 32 bytes of app parms
  1569. +0008    000EC     DC.W        $0000, $0000
  1570. +000C    000F0     DC.W        $0000, $0000
  1571. +0010    000F4     DC.W        $0000, $0000
  1572. +0014    000F8     DC.W        $0000, $0000
  1573. +0018    000FC     DC.W        $0000, $0000
  1574. +001C    00100     DC.W        $0000, $0000
  1575. +0020    00104     DC.W        $0000, $0000
  1576. Entry, UseGlobals, DoneWithGlobals, GetSAA5, and CalculateOffset are all routines linked in from the StARTGlue.a.o file; MAIN is from the Persist.p source file; and %I_MUL4 is a library routine from PasLib.o. Following these routines are 36 bytes of data. The first 4 bytes are for our global variable, accumulation. The final 32 bytes are the application parameters above A5 that the system occasionally uses. 
  1577. Let’s take a look at the MAIN function, which shows us accessing our global variable. First, we call UseGlobals to determine what A5 should be and to set A5 to that value. In this case, UseGlobals will set A5 to point to Globals+$0004, placing our single 
  1578. 4-byte global below A5, and the 32 bytes of system data above A5. Next, we push the value we want to square onto the stack twice and call %I_MUL4 to multiply the two 4-byte values. 
  1579. Finally, we get to the fun part, where we add the result of %I_MUL4 to our global variable. This is done by the instruction at MAIN+$001A: ADD.L D0,-$0004(A5). This instruction says to take the value in register D0 and add it to the number stored four bytes below A5. Because A5 points to Globals+$0004, this instruction adds D0 to the value starting at Globals.
  1580. THE MAKESTANDALONE TOOL 
  1581. The code above was created by the MakeStandAlone tool. Let’s look now at the workhorse function of that tool, ConvertAppToStandAloneCode. It’s this function that takes an application conforming to the format shown in Figure 3 and converts it to the standalone resource shown in Figure 5. 
  1582. ConvertAppToStandAloneCode starts by declaring a ton of variables, all of which are actually used. It then opens the file containing the segments shown in Figure 3 by calling OpenResFile on gInputFile, a string variable set up before calling this routine. If we can’t open the file, we blow out by calling ErrorExit, a routine that prints the string passed to it and then aborts back to the MPW Shell. 
  1583. PROCEDURE ConvertAppToStandAloneCode;
  1584.  
  1585.     VAR
  1586.         refNum:                 INTEGER;
  1587.         code0:                    Code0Handle;
  1588.         code1:                    CodeHandle;
  1589.         code2:                    CodeHandle;
  1590.         sizeOfGlobals:        LONGINT;
  1591.         expandedGlobals:        Handle;
  1592.         myA5:                    LONGINT;
  1593.         codeSize:                LONGINT;
  1594.         address:                CStrPtr;
  1595.         err:                        OSErr;
  1596.         fndrInfo:                FInfo;
  1597.         existingResource:    Handle;
  1598.  
  1599.     BEGIN
  1600.         refNum := OpenResFile(gInputFile);
  1601.         IF (refNum = - 1) | (ResError = resFNotFound) THEN
  1602.             ErrorExit('Error trying to open the source file.', ResError);
  1603. Loading the segments. ConvertAppToStandAloneCode then scopes out the contents of the file it has just opened. 
  1604. The first thing it looks at is CODE 0, which contains the application’s jump table. If CODE 0 exists and we can load it, we mark it nonpurgeable and call a utility routine, ValidateCode0, to make sure that CODE 0 contains what we expect. Here’s what the code looks like:
  1605. code0 := Code0Handle(Get1Resource('CODE', 0));
  1606. IF (code0 = NIL) | (ResError <> noErr) THEN
  1607.     ErrorExit('Couldn’t load CODE 0 resource.', ResError);
  1608. HNoPurge(Handle(code0));
  1609. ValidateCode0(code0);
  1610. MakeStandAlone requires that the input file conform strictly to the format shown in Figure 3. Among other things, this means that there should be only two entries in the jump table, one for CODE 1 and one for CODE 2. ValidateCode0 checks for this condition and makes a few other sanity checks to make sure that CODE 0 doesn’t contain any other information that we’d otherwise have to deal with. If there are any problems, ValidateCode0 calls ErrorExit with an appropriate message. Thus, if ValidateCode0 returns, everything appears to be OK with CODE 0. 
  1611. At times it might be tricky or impossible to create a CODE 1 resource with only one entry point. In some cases, you can bludgeon your code into a single segment by passing -sn to the Link tool, as was done earlier. Unfortunately, this won’t always work. For instance, some MPW routines are compiled to require jump table entries. (Examples of such routines are sprintf and its subroutines.) If you try to use any of these routines, you’ll get more than one entry point in CODE 1. The only way to avoid this problem is to keep away from library routines that require jump table entries. If you’re in doubt, simply attempt to use the routine in question; the compiler, the linker, or MakeStandAlone will tell you if anything is wrong.
  1612. ConvertAppToStandAloneCode next checks the remaining resources, CODE 1 and CODE 2. CODE 1 contains the executable code that will make up the bulk of the standalone code resource, and CODE 2 contains the compressed data holding the global variables’ initial values, as well as the routines that decompress that data. Each segment is loaded and passed to ValidateCode to make sure that the resource looks OK. 
  1613. code1 := CodeHandle(Get1Resource('CODE', 1));
  1614. IF (code1 = NIL) | (ResError <> noErr) THEN
  1615.     ErrorExit('Couldn’t load CODE 1 resource.', ResError);
  1616. HNoPurge(Handle(code1));
  1617. ValidateCode(code1, 1, 0);
  1618. code2 := CodeHandle(Get1Resource('CODE', 2));
  1619. IF (code2 = NIL) | (ResError <> noErr) THEN
  1620.     ErrorExit('Couldn’t load CODE 2 resource.', ResError);
  1621. HNoPurge(Handle(code2));
  1622. ValidateCode(code2, 2, 8);
  1623. ValidateCode takes a handle to the segment, along with a couple of values used in the sanity check. The first number is actually the resource ID of the segment and is used when reporting any errors. The second value is the jump table offset of the entry point for this segment and is checked against the segment header (see Inside Macintosh Volume II, page 61, for a description of this header). Again, if any problems are discovered or any unexpected values encountered (such as more than one entry point per segment), ValidateCode aborts by calling ErrorExit. 
  1624. Converting to a standalone resource. Once the three segments have been loaded into memory and validated, we’re ready to convert these resources into a single standalone resource. We begin by decompressing the data that represents the preinitialized values for our global data. The first part of accomplishing this is getting a temporary buffer to hold the expanded values. We find the size of this buffer by looking at the belowA5 field in CODE 0. We then create a buffer this size by calling NewHandle. 
  1625. sizeOfGlobals := code0^^.belowA5;
  1626. expandedGlobals := NewHandle(sizeOfGlobals);
  1627. IF expandedGlobals = NIL THEN
  1628.     ErrorExit('Couldn’t allocate memory to expand A5 data.', MemError);
  1629. We next perform the magic that expands the global variables into the buffer. CODE 2 contains the decompression routines, so all we do is call them. The function that performs this decompression is called _DATAINIT, which our validation routines have already confirmed is the entry point to CODE 2. _DATAINIT needs to have A5 already pointing to the top of the globals area, which in our case is the end of the handle we just created. After calling SetA5 to do this, we use CallProcPtr, a little inline assembly routine, to call _DATAINIT in CODE 2. _DATAINIT fills in our handle with the initial values for our global variables and then kindly returns to us. We quickly restore the previous value of A5 so that we can access our own global variables again, and then prepare to finish with the input file. We’ll need CODE 1 later, so we detach it from the input file, and then close the input file. 
  1630. myA5 := SetA5(ord4(expandedGlobals^) + sizeOfGlobals);
  1631. CallProcPtr(ProcPtr(ord4(code2^) + SizeOf(CodeRecord)));
  1632. myA5 := SetA5(myA5);
  1633. DetachResource(Handle(code1));
  1634. CloseResFile(refNum);
  1635. At this point, we’re done with the input file, and we have in our possession two handles. The code1 handle contains the executable code for the standalone resource, and the expandedGlobals handle contains the global data. Our task at this point is to combine these two pieces of data.
  1636. We start by getting the size of the actual object code in CODE 1. This is the size of the entire handle, less the size of the CODE resource header. The handle is then grown large enough to hold the object code, the global data, and the 32 bytes of application parameters. If we can’t grow the handle, we exit. Game over.
  1637. codeSize := GetHandleSize(Handle(code1)) - SizeOf(CodeRecord);
  1638. SetHandleSize(Handle(code1), codeSize + sizeOfGlobals + kAppParmsSize);
  1639. IF MemError <> noErr THEN
  1640.     ErrorExit('Couldn’t expand CODE 1 handle.', MemError);
  1641. Once the handle containing the code is large enough, we call BlockMove twice to put everything in place. The first call to BlockMove moves the object code down in the handle, effectively removing the segment header. This header is useful only for segments and jump table patching; we don’t need it for our standalone resource. The second call to BlockMove copies the global data stored in expandedGlobals to the end of the handle holding the object code. We finish up by calling FillChar, a built-in Pascal routine, to clear out the 32 bytes of application parameters. 
  1642. BlockMove(Ptr(ord4(code1^) + SizeOf(CodeRecord)), Ptr(code1^), codeSize);
  1643. BlockMove(expandedGlobals^, Ptr(ord4(code1^) + codeSize), sizeOfGlobals);
  1644. address := CStrPtr(ord4(code1^) + codeSize + sizeOfGlobals);
  1645. FillChar(address^, 32, CHAR(0));
  1646. Filling out the header. Our standalone code resource is now almost complete. All that remains is to fill out the fields of the standard header that seems to begin most standalone code resources. 
  1647. The header consists of a word for a set of flags, the type and ID of the resource, and a word for a version number. These fields were written to our original CODE 1 when we linked with StARTGlue.a.o, but they were uninitialized. We take the opportunity here to fill in these fields. 
  1648. As an additional goodie, our standard header contains a 4-byte refCon that can be used for anything the standalone code wants (for example, holding some data that the calling application can access).
  1649. Once the global data has been appended to the object code handle, we no longer need the expandedGlobals handle, so we dispose of it and prepare to write out our objet d’art.
  1650. WITH StdHeaderHandle(code1)^^ DO BEGIN
  1651.     flags := gHdrFlags;
  1652.     itsType := gResType;
  1653.     itsID := gResID;
  1654.     version := gHdrVersion;
  1655.     refCon := 0;
  1656. END;
  1657.  
  1658. DisposeHandle(expandedGlobals);
  1659. Writing the standalone resource. The first step to writing out our standalone code resource is to open the file that will hold it. We do this by calling OpenResFile. If OpenResFile reports failure, it’s probably because the file doesn’t exist. Therefore, we try to create the file by calling CreateResFile. If that succeeds, we set the Finder information of the output file so that we can easily open it with ResEdit, and then attempt to open the file again. If that second attempt fails, we give up by calling ErrorExit. 
  1660. refNum := OpenResFile(gOutputFile);
  1661. IF (refNum = - 1) | (ResError = resFNotFound) THEN BEGIN
  1662.     CreateResFile(gOutputFile);
  1663.     IF (ResError <> noErr) THEN
  1664.         ErrorExit('Error trying to create the output file.', ResError);
  1665.  
  1666.     err := GetFInfo(gOutputFile, 0, fndrInfo);
  1667.     IF err <> noErr THEN
  1668.         ErrorExit('Error getting finder information.', err);
  1669.  
  1670.     fndrInfo.fdType := 'rsrc';
  1671.     fndrInfo.fdCreator := 'RSED';
  1672.     err := SetFInfo(gOutputFile, 0, fndrInfo);
  1673.     IF err <> noErr THEN
  1674.         ErrorExit('Error setting finder information.', err);
  1675.  
  1676.     refNum := OpenResFile(gOutputFile);
  1677.     IF (refNum = - 1) | (ResError = resFNotFound) THEN
  1678.         ErrorExit('Error trying to open the output file.', ResError);
  1679. END
  1680. If our first call to OpenResFile succeeded (skipping to the ELSE clause shown below), the file already exists and may need to be cleaned up a little. If the output file already contains a resource with the same type and ID of the resource we want to write, we need to get rid of it. Calls to RmveResource and DisposeHandle accomplish that grisly task. 
  1681. ELSE BEGIN
  1682.     SetResLoad(FALSE);
  1683.     existingResource := Get1Resource(gResType, gResID);
  1684.     SetResLoad(TRUE);
  1685.  
  1686.     IF existingResource <> NIL THEN BEGIN
  1687.         RmveResource(existingResource);
  1688.         DisposeHandle(existingResource);
  1689.     END;
  1690. END;
  1691. At this point, we have a handle that needs to be added to a file as a resource, and an open file waiting for it. Three quick calls to the AddResource, WriteResource, and SetResAttrs routines take care of the rest of our duties, and the standalone code resource is written to the designated file. We then close the file and leave ConvertAppToStandAloneCode with the knowledge of a job well done. 
  1692.     AddResource(Handle(code1), gResType, gResID, gResName);
  1693.     IF ResError <> noErr THEN
  1694.         ErrorExit('Error adding the standalone resource.', ResError);
  1695.  
  1696.     WriteResource(Handle(code1));
  1697.     IF ResError <> noErr THEN
  1698.         ErrorExit('Error writing the standalone resource.', ResError);
  1699.  
  1700.     SetResAttrs(Handle(code1), gResFlags);
  1701.     IF ResError <> noErr THEN
  1702.         ErrorExit('Error setting the resource attributes.', ResError);
  1703.  
  1704.     CloseResFile(refNum);
  1705. END;
  1706. UP CLOSE AND PERSONAL WITH STARTGLUE.A.O 
  1707. Converting our application into a standalone code resource is only part of the process. The other part involves the routines that allow our code to execute on its own. These routines preserve the A5 world of the host application, set up the standalone code’s A5 world, and restore the host application’s A5 world when the standalone code is finished.
  1708. These routines are provided by StARTGlue.a.o. StARTGlue.a.o includes four client (external) routines (UseGlobals, CopyHostQD, DoneWithGlobals, and GetSAA5), an internal routine (CalculateOffset), and a block of public and private data. Because of this embedded block of data, the library is written in assembly language. Let’s take a look at the source file, StARTGlue.a. 
  1709.                         CASE            OFF
  1710.  
  1711.                         INCLUDE        'Traps.a'
  1712.                         INCLUDE        'QuickEqu.a'
  1713.                         INCLUDE        'SysEqu.a'
  1714. FirstByte            MAIN
  1715.                         IMPORT        Main, _DATAINIT
  1716.                         ENTRY        gGlobalsOffset
  1717.                         bra.s        Island
  1718.  
  1719.                         dc.w            0                        ; flags
  1720.                         dc.l            0                        ; resType
  1721.                         dc.w            0                        ; ID
  1722.                         dc.w            0                        ; version
  1723.                         dc.l            0                        ; refCon 
  1724.  
  1725. gGlobalsOffset        dc.l            0                    ; offset to globals
  1726. By convention, standalone code resources start with a standard header having the format shown in Table 2.
  1727. Table 2
  1728. Standard Header for Standalone Code Resources
  1729. Field    Size    Contents
  1730. entry    2 bytes    Branch instruction to first byte of executable code.
  1731. flags    2 bytes    User-defined flags. You can set and define this field any way
  1732.         you want.
  1733. resType    4 bytes    Resource type.
  1734. resID    2 bytes    Resource ID.
  1735. version    2 bytes    Version number. The values for this field are unregulated, 
  1736.         but usually follow the same format as the version numbers 
  1737.         in 'vers' resources.
  1738. refCon    4 bytes    User-defined reference constant. Use this field for anything
  1739.         you want, including communicating with the host.
  1740. Nothing requires standalone code to include this header. However, it’s nice to follow convention, and including the resource type and ID makes identifying blocks in the heap easier.
  1741. When you compile and link with StARTGlue.a.o, these fields are empty (set to zero). However, the MakeStandAlone tool automatically fills in these fields based on command-line options when it converts your code.  
  1742. StARTGlue.a.o’s entry point branches to the following code, which then branches to a function called Main. The reason for this double jump is to maintain the standard header for a standalone code resource. The first two bytes are used to jump to the code’s entry point. However, we can jump only 128 bytes with the 68000’s 2-byte relative branch instruction. If Main happens to be further than 128 bytes from the start of the code resource, we would need to use the 4-byte branch instruction. To provide for this contingency, we have our 2-byte branch instruction jump to the 
  1743. 4-byte branch instruction, which can then jump to anywhere that it wants with impunity.
  1744. Island
  1745.                         bra            Main
  1746.                         lea            _DATAINIT,A0        ; dummy line to reference
  1747.                                                                 ;   _DATAINIT
  1748. The LEA instruction that follows the branch is a dummy statement. Its sole purpose is to trick the linker into including _DATAINIT, the routine that the MakeStandAlone tool calls to decompress the global data. Because the LEA instruction immediately follows an unconditional branch, and because it doesn’t have a label that can be jumped to, it’s never actually executed. 
  1749. UseGlobals. The UseGlobals function is used to set up the standalone code’s A5 world. An example of this is shown earlier in the Persist program. 
  1750. UseGlobals performs three functions:
  1751. •    It sets the A5 register and the low-memory location CurrentA5 to the correct value for the standalone code. It determines the standalone code’s A5 value by calling the GetSAA5 function, described later.
  1752. •    It copies the host application’s QuickDraw globals pointer to the standalone code’s QuickDraw globals pointer (this pointer is the 
  1753. 4-byte value to which A5 normally points). By copying this pointer, the standalone code can call Toolbox routines knowing that A5 references a valid set of QuickDraw globals.
  1754. •    It returns the host application’s A5 and CurrentA5 values so that they can later be restored.
  1755. ;
  1756. ; PROCEDURE UseGlobals(VAR save: SavedA5Rec);
  1757. ; { Balance with DoneWithGlobals. }
  1758. ;
  1759. UseGlobals            PROC            EXPORT
  1760.                         IMPORT        GetSAA5
  1761.  
  1762.                         move.l        4(sp),A0                ; get ptr to save record
  1763.                         move.l        A5,(A0)                    ; save A5
  1764.                         move.l        CurrentA5,4(A0)        ; save low-memory value
  1765.                         clr.l        -(sp)                    ; make room for function 
  1766.                                                                     ;   result
  1767.                         bsr.s        GetSAA5                    ; get our own A5
  1768.                         move.l        (sp)+,A5                ; make it real
  1769.                         move.l        A5,CurrentA5            ; make it really real
  1770.                         move.l        4(sp),A0                ; get ptr to save record
  1771.                         move.l        (A0),A0                    ; get host’s A5
  1772.                         move.l        (A0),(A5)                ; copy his QD globals ptr
  1773.                         move.l        (sp)+,(sp)                ; remove parameters
  1774.                         rts                                        ; return to caller
  1775. CopyHostQD. The CopyHostQD routine is an optional utility routine. You don’t need to call it unless you have to ensure that the host’s QuickDraw globals remain undisturbed. By default, your standalone code shares the same set of QuickDraw globals as the host application. However, if you have unusual requirements, you may need to establish your own set of QuickDraw globals. 
  1776. A simple way to set up your own QuickDraw globals would be to call InitGraf(@thePort) after you called UseGlobals. This would create a valid set of QuickDraw globals. However, some standalone code resources initially need to work with information provided by the host application. For instance, a custom MDEF normally draws in the currently set port. To inherit such information, you can call CopyHostQD just after you call UseGlobals. 
  1777. ;
  1778. ; PROCEDURE CopyHostQD(thePort: Ptr; oldA5: Ptr);
  1779. ;        { Balance with DoneWithGlobals. }
  1780. ;    assumes that A5 has already been set up to our globals
  1781. ;
  1782. CopyHostQD            PROC            EXPORT
  1783.  
  1784. returnAddress        EQU            0
  1785. oldA5                EQU            returnAddress+4
  1786. thePortPtr            EQU            oldA5+4
  1787. parameterSize        EQU            thePortPtr-oldA5+4
  1788.  
  1789.                         move.l        oldA5(sp),A0            ; get oldA5
  1790.                         move.l        (A0),(A5)                ; make (A5) point to 
  1791.                                                                     ;   thePort
  1792.         
  1793.                         move.l        (A0),A0                    ; get host’s thePort 
  1794.                                                                     ;   pointer
  1795.                         move.l        thePortPtr(sp),A1    ; get our thePort pointer
  1796.                         move.l        #grafSize,D0            ; copy whole grafPort
  1797.                         move.l        D0,D1                    ; since the pointers
  1798.                         subq.l        #4,D1                    ;   point near the end of                         sub.l        D1,A0                    ;   the QD globals, move 
  1799.                         sub.l        D1,A2                    ;   them down to point 
  1800.                                                                     ;   to the beginning
  1801.                         _BlockMove
  1802.         
  1803.                         move.l        (sp)+,A0                ; pop return address
  1804.                         add            #parameterSize,sp    ; pop parameters
  1805.                         jmp            (A0)                        ; return to caller
  1806. DoneWithGlobals. The DoneWithGlobals routine reverses the effects of UseGlobals. It simply restores the values of the A5 register and low-memory global CurrentA5 to the values saved by UseGlobals. 
  1807. ;
  1808. ; PROCEDURE DoneWithGlobals(restore: SaveA5Rec);
  1809. ;
  1810. DoneWithGlobals    PROC            EXPORT
  1811.  
  1812.                         move.l        (sp)+,A0                ; pull off return address
  1813.                         move.l        (sp)+,A1                ; address of record 
  1814.                                                                     ;   holding info
  1815.                         move.l        (A1),A5                    ; first restore A5
  1816.                         move.l        4(A1),CurrentA5        ; then restore low-memory 
  1817.                                                                     ;   value
  1818.                         jmp            (A0)                        ; return to caller
  1819. GetSAA5. You probably won’t need to call GetSAA5. This function is called by UseGlobals to return the value that’s used to refer to the standalone code’s A5 world. The first time this function is called, this value needs to be calculated. After that, the offset from the beginning of the code to the global data is cached and is used in subsequent calls to GetSAA5. Once the offset has been determined, it’s added to the address of the start of the standalone code and returned to the caller. 
  1820. ;
  1821. ; FUNCTION GetSAA5: LONGINT;
  1822. ;
  1823. GetSAA5                PROC            EXPORT
  1824.                         IMPORT        CalculateOffset
  1825.  
  1826.                         move.l        gGlobalsOffset,D0    ; have we done this 
  1827.                                                                     ;   before?
  1828.                         bne.s            @1                        ; yes, so use cached 
  1829.                                                                     ;   value
  1830.                         bsr.s            CalculateOffset    ; nope, so calculate it
  1831. @1
  1832.                         lea                FirstByte,A0        ; get base address
  1833.                         add.l            A0,D0                ; add offset to top of 
  1834.                                                                     ;   globals
  1835.                         move.l            D0,4(sp)            ; set function result
  1836.  
  1837.                         rts                                        ; return to caller
  1838. CalculateOffset. CalculateOffset determines the offset from the beginning of the code resource to the location that A5 should point to. We see from Figure 5 that A5 should point to the location 32 bytes before the end of the resource. Therefore, we get a handle to the code resource, get the code resource’s size, subtract 32 from it, and return the result as the needed offset. 
  1839. CalculateOffset    PROC
  1840.  
  1841.                         lea            FirstByte,A0            ; get pointer to us
  1842.                         _RecoverHandle                        ; get handle to us
  1843.                         _GetHandleSize                        ; find our size (= offset 
  1844.                                                                     ;   to end of globals)
  1845.                         sub.l        #32,D0                    ; account for 32 bytes of 
  1846.                                                                     ;   appParms
  1847.                         lea            gGlobalsOffset,a0    ; get address to save 
  1848.                                                                     ;   result
  1849.                         move.l        D0,(A0)                    ; save this offset for 
  1850.                                                                     ;   later
  1851.                         rts
  1852. SUMMARY OF THE THREE SOLUTIONS 
  1853. This article has explored three ways to access global variables in standalone code: the THINK method, the OpenA5World method, and the StART method.
  1854. The THINK method uses the A4 register to access the global variables. The A4 register is managed by the RememberA0, SetUpA4, and RestoreA4 functions. The advantages of the THINK method are as follows:
  1855. •    The host’s A5 register is untouched.
  1856. •    The storage for globals is coupled with the storage for the code itself, meaning that no additional storage needs to be allocated or disposed of.
  1857. The disadvantages of the THINK method are:
  1858. •    The A4 register cannot be used for code optimization.
  1859. •    Standalone code resources cannot be marked purgeable without the risk of losing any values stored in global variables.
  1860. •    Unless you use the multisegmented standalone code features of the THINK environments, you’re limited to a combined total of 32K of code and data.
  1861. •    The global data is stored in an uncompressed format on disk.
  1862. Because MPW doesn’t provide the compiler support that THINK does, the approach described in the Tech Note reuses register A5 to access global variables. Support is provided by the functions MakeA5World, SetA5World, RestoreA5World, DisposeA5World, OpenA5World, and CloseA5World. The advantages of this method are as follows:
  1863. •    It has a compact on-disk format (global data is compressed).
  1864. •    A4 is free for code optimization.
  1865. •    The code resource can be marked purgeable.
  1866. •    You can access 32K of code and 32K of data.
  1867. The disadvantages of the Tech Note method are:
  1868. •    It requires support from the host application for persistence of globals.
  1869. •    Care must be taken to restore the host’s A5 when control is returned to the host (which can include callbacks, a la HyperCard).
  1870. The StART solution tries to incorporate the best of both worlds. StART’s use of the A5 register is managed by calls to UseGlobals, DoneWithGlobals, and (optionally) CopyHostQD. Its advantages are as follows:
  1871. •    A4 is free for code optimization.
  1872. •    You can access 32K of code and 32K of data.
  1873. •    The storage for globals is coupled with the storage for the code itself, meaning that no additional storage needs to be allocated or disposed of.
  1874. The disadvantages it doesn’t address are:
  1875. •    Care must be taken to restore the host’s A5 when control is returned to the host (which can include callbacks).
  1876. •    Standalone code resources cannot be marked purgeable without the risk of losing any values stored in global variables.
  1877. •    The global data is stored in an uncompressed format on disk.
  1878. There’s one major limitation that none of these techniques address. Neither MPW nor THINK can handle certain kinds of global variables — ones that get preinitialized to some absolute address — in standalone code. For instance, consider the following C source:
  1879. char *myStrings[] = {
  1880.     "Macintosh",
  1881.     "Programming",
  1882.     "Secrets",
  1883.     "2nd Edition"
  1884. };
  1885. This declares an array of pointers to the four given strings. When this definition appears in source code in a THINK C project, the compiler will tell you that this sort of initialization is illegal in standalone code. However, MPW’s compilers aren’t as integrated into the build process as THINK’s are, and they don’t know to give you a similar warning. Thus, we can compile an array like the one just shown without an error. When the MakeStandAlone tool is later executed, it will dutifully initialize the array with pointers to the given strings. However, these pointers are in the form of absolute memory locations, which are valid only at the time the globals are expanded. When it’s time to execute the standalone code, it’s almost certain that the strings won’t be loaded into the same place they were in when the globals were expanded, making the pointers in our array invalid.
  1886. All you can do to avoid this problem is make sure that you don’t have any global variables that are preinitialized to the addresses of other objects (such as strings, functions, and other variables). Without knowing the format of the compressed global data that _DATAINIT expands, it isn’t possible to program the MakeStandAlone tool to look for the problem globals. 
  1887. WHERE TO GO FROM HERE
  1888. This article just scratches the surface of what can be done with MPW. It gives a little behind-the-scenes information and describes how to take advantage of that information with a custom tool. The intrepid explorer may want to apply what’s learned here to some other topics.
  1889. 32-BIT EVERYTHING
  1890. With MPW 3.2, Apple has eliminated most of the traditional 32K barriers imposed by 16-bit fields. By expanding fields in the jump table to 32 bits, replacing the 
  1891. Segment Loader, patching object code with absolute addresses, and providing user-callable runtime routines, MPW allows you to create code and data blocks of practically any size. It may be interesting to explore the new formats and data structures used with 32-bit everything to see how you can use them in the same way we used the old 16-bit information.
  1892. MERGING START TECHNIQUES WITH THOSE OF THE TECH NOTE
  1893. The StART method uses a bit of assembly language to provide some runtime support for standalone code. Specifically, it maintains a reference to the code’s global variables in a local data field. This same technique could be used to partially remove the dependency of code created with the Tech Note method on the host application.
  1894. JUMP TABLE
  1895. We’ve fully explored the area below A5, but only a small part of the area above A5. We’ve looked at the globals area below A5 and the application parameters area above A5, but the majority of the “above A5 world” is normally occupied by a jump table that supports multisegmented applications. With a little more work and runtime support, it may be possible to write multisegmented standalone code in MPW.
  1896. Multisegmented standalone code offers more benefits than simply allowing you to write huge chunks of standalone code. Programmers using Object Pascal and readers of the Macintosh Technical Note “Inside Object Pascal” (formerly #239) know that polymorphism requires the use of a jump table. By implementing support for a jump table in standalone code, it should be possible to write standalone code with Object Pascal or C++’s PascalObjects. C++ programmers writing native C++ classes or classes based on HandleObject should refer to Patrick Beard’s article, “Polymorphic Code Resources,” in develop Issue 4.
  1897. THANKS DEPARTMENT
  1898. This article would not have existed if not for the help and inspiration of the following individuals and nonindividuals:
  1899. •    The creators of the A4 method used in the THINK products for showing that globals could be used in standalone code
  1900. •    The authors of the BuildDCMD tool for MacsBug, a tool that proved that applications conforming to a certain guideline could be converted to standalone code
  1901. •    Larry Rosenstein, who, thanks to file sharing, unknowingly provided the source code shell for the MakeStandAlone tool (all the stuff that deals with error handling and command-line parsing)
  1902. THE VETERAN NEOPHYTE 
  1903.     DIGITAL ZOOLOGY
  1904.     
  1905. DAVE JOHNSON 
  1906. 4 a.m. Friday still feels like Thursday. Five hours remain until the contest. Bean dip slowly dries around the rim of a jar, turning a darker, almost translucent brown. This corner of the table, the one nearest the center of the room, is littered with the strange and particular combination of plastic, paper, metal, glass, and organic debris that typifies the remains of junk food. The room, a large but nondescript meeting room with beige-painted cinder block walls, is bathed in fluorescent light, 60-cycle radiation painting the few remaining occupants a lovely whitish green.
  1907. A few of them still hunch over keyboards, pecking feverishly, squeezing the last few desperate instructions into their robots. Others sprawl on the floor around the test course, watching carefully and hopefully as their fragile creations, their little Lego and wire and motor golems, their tiny mind children, haltingly — but autonomously — negotiate their way toward the goal. The expressions on their faces are variously rapt, worried, and proud.
  1908. The scene is the early morning of the last day of Artificial Life III, a week-long scientific hoe-down that took place last June in Santa Fe. The hardy hackers in the cluttered room at the back of the building are entrants in a robot-building contest that will be run as part of the “Artificial 4H Show” beginning at 9 a.m. Their robot creatures run the gamut from the eminently practical to the practically insane. 
  1909.     The insane ones, of course, are by far the more interesting. One, appropriately named Rob Quixote, has only a single wheel, and therefore must steer by rotating an oversized horizontal windmill-like contraption fastened to its head, effectively pushing against the air to turn itself. Another moves by a sort of spastic lurching; throwing its entire front section forward, it gains an awkward quarter inch, then gathers up its hindquarters for another throw. This one is so inefficient that it requires twice the usual number of batteries, and uses them up in a single run. Amazingly enough, though, it successfully traverses the course, albeit slowly and with much ineffectual thrashing. 
  1910. “Artificial life,” as a named discipline, appeared on the scientific scene relatively recently. The first conference happened in the fall of 1987, and gave joyous birth to this new field of scientific inquiry, or rather this new and rich confluence of many different fields. Scientists who had been working in isolation suddenly discovered others pursuing similar lines of investigation, and the meeting of minds was electric.
  1911. Artificial life is an attempt to create and study artificial systems — that is, systems created by humans — that mimic processes or exhibit behaviors usually associated only with living systems. Predictably, the primary medium that these systems are created on (in?) is computers; this is a field that depends heavily on technology to get its work done (they’re doomed if electricity ever becomes unavailable). Also predictably, a large proportion of its devotees are biologists, especially theoretical biologists.
  1912. Why would biologists want to study artificial life? Don’t they already have their hands full trying to figure out the real thing? Well, for one thing, there are a lot of experiments biologists would love to do that they simply can’t: nature doesn’t come with convenient levers and knobs, and you can never roll back time and try something over again. So if biologists can develop good models of biological phenomena, they can implement them on computers and run clean and tidy experiments that are repeatable, detailed, controlled, and manipulable down to the last detail. This is a far    
  1913.  
  1914.  cry from the messy, inexact, unrepeatable real world, and for some biologists would be tantamount to scientific nirvana.
  1915. But there’s another, larger reason for biologists to study artificial life. In the words of Chris Langton, self-described “midwife” of artificial life (he organized the first conferences and named the field), “Such systems can help us expand our understanding of life as it could be. By allowing us to view the life that has evolved here on Earth in the larger context of possible life, we may begin to derive a truly general theoretical biology capable of making universal statements about life wherever it may be found and whatever it may be 
  1916. made of.”
  1917. I like it.
  1918. When I read this I was hooked. Visions of bizarre, unknowable alien intelligences and strange, seething soups that cling and quiver and creep around filled my head. And here are real scientists hanging around seriously discussing it! This is some serious fun! And lots of different kinds of scientists are paying attention; biologists, mathematicians, physicists, chemists, robotocists, and computerists are all well represented at the conferences, with a sprinkling of philosophers, anthropologists, economists, and others. The gee-whiz factor hooked me, but the interdisciplinary thrust of artificial life reeled me in.
  1919. (In conversation people say “a-life.” I’ve seen it written as Alife, A-life, alife, and a-life. I wanted to use alife, but people tended to pronounce it like “get a life,” so I’ll use a-life instead.)
  1920. Another appeal for me is the tacit approval of the “build it first, then study it” approach in a-life. This method of building things and learning things (stumbling around, really, but intelligent stumbling, directed stumbling) has always been my particular forte. The premise is that we don’t need to completely understand something before we can build it or build a model of it, and that it’s very often more instructive to get a crude version up and working immediately than
  1921.     to try to refine the thing completely before trying it out. By fumbling around and building things blindly, we can often learn a lot by virtue of the happy 
  1922. accidents that inevitably occur. And it’s tons more fun that way.
  1923. There were far too many interesting things at the conference to describe them all here. Instead I want to tell you about one particular talk that caused me to have a powerful “Aha!” experience (and I live for “Aha!” experiences). If you know something about evolution already, the following may not be news to you, but presumably most computer programmers don’t study biology. 
  1924. The talk dealt with Lamarckian evolution. Lamarck was a contemporary of Darwin who postulated that the things experienced by an organism during its lifetime could affect the traits handed down to the next generation. As an example, a Lamarckian might believe that proto-giraffes had to stretch their necks up to reach the leaves at the tops of the trees, and because of all the stretching, their descendants were born with longer necks. Unfortunately for Lamarck and his followers, this is rubbish.
  1925. It turns out that as far as biological evolution is concerned, Lamarckism is nonexistent: there was no such thing at work in the development of life on Earth. So my curiosity was piqued when I saw the title of this talk by David Ackley and Michael Littman: “A Case for Distributed Lamarckian Evolution.” What, were they crazy? Talking Lamarck to all these modern scientists? (At the previous conference, Ackley had one of the few really amusing presentations, so of course I would have gone no matter what the topic, but this one looked particularly juicy.)
  1926. Ackley and Littman weren’t trying to convince people that Lamarckian evolution had anything to do with life on earth. What they did instead was compare the efficiencies of the two types of evolution. (They created a simple evolution simulation, and then compared Darwinian and Lamarckian evolution in their abilities to find a solution to a particular problem.) Hey, this is     
  1927.  
  1928. after all artificial life, so if Lamarckian evolution works better, we can use it, right? 
  1929. What they found was that when Lamarckian evolution was allowed to enter the picture — when the things learned in one generation were at least partially passed on to the next — the system was much, much better at solving the given problem. It consistently found better solutions faster in every single case they tried. This of course makes some intuitive sense. Rather than waiting for genetic shuffling to find a solution to the problem, the prior generation can point the current one in the right direction. So Lamarckian evolution is pretty much a great thing, evolutionarily speaking, because it gets you a lot further and it gets you there a lot faster. (Where it is exactly that you’re going is a question for the philosophers; for the moment, let’s just blithely assume that we really do want to get there.) Their point was that as simulation builders we should think about using Lamarckian inheritance in our simulations, because it works so well. But this point reinforced something else that had been rolling around in my head. 
  1930. There’s an evolutionary premise that I initially learned about through reading an article by a robotocist named Hans Moravec in the first Artificial Life proceedings. I learned more about it in Richard Dawkins’s book The Blind Watchmaker and in a fascinating book called Seven Clues to the Origin of Life by a Glasgow chemist named Graham Cairns-Smith. This particular concept is called “genetic takeover.” 
  1931. According to this idea, one substance can gradually replace another as the carrier of genetic information. Cairns-Smith postulates that life began with replicating inorganic crystals — clays, as a matter of fact — and that a genetic takeover gradually occurred, with proteins and nucleic acids gaining in dominance until finally the original materials were no longer needed. Dawkins and Moravec (and many others) think that a genetic takeover is occurring now, with human culture taking over from nucleic acids as the evolving entity, though they differ in their candidates for the new “gene-equivalent.”    Dawkins likes to speak about the “meme,” a very useful term first coined in his book The Selfish Gene. A meme is an idea, really, or a piece of information. It is immaterial, and requires a material substrate of brains, books, computers, or other media to exist. But given that substrate, the parallels with genes are very good. Just like genes, memes replicate (we tell each other good ideas, or write them down for others), memes mutate (we don’t always get it right in the telling), memes mate (ideas in combination often give birth to new ones), and memes compete for survival (“good” ideas stick around a long, long time, but “bad” ones die by not being passed on to anyone: mindshare is their means of existence). 
  1932. Moravec, on the other hand, seems to be more interested in the evolution of machines, and speculates convincingly and entertainingly that our machines, our artifacts, will eventually become the dominant evolving entities on Earth. Science fiction, or science fact? I don’t know — there are compelling arguments both ways — but in either case it makes for very good reading.
  1933. In any case, they think that perhaps here on Earth biological evolution is thoroughly obsolete, and 
  1934. almost despite myself I have to agree. Sure, it’s still operating, but the evolution of human bodies has been completely outstripped by the evolution of human culture. Bodies evolve at an extremely slow pace, but culture evolves incredibly fast, and humans are having such a profound impact on the Earth that biology simply can’t keep up. Look at the changes on Earth in the last millennium. Most of the species alive a thousand years ago have remained physically about the same, yet there’s no question that the Earth has undergone a radical transformation, and primarily at the hands of humans, as a by-product of their culture. (You might hesitate to call the rampant, wanton destruction and boundless consumption of resources that Earth has suffered at the hands of humans “evolution,” but remember that the word “evolution” does not necessarily imply improvement.) But why is it going so fast? How come humans do this and other species don’t?    
  1935.  
  1936. One of the primary distinctions between human beings and their close animal relatives is language. Humans can communicate with abstract symbols, and their communications can be “fossilized” in time (that is, written down for later). Here comes the “Aha!” we’ve all been waiting for: this ability allows humans to engage in a form of Lamarckian evolution! The things we learn in our lifetimes can be passed on to the next generation, though in a filtered sort of way. We can’t change the way our offspring are built, but we can change their behavior (teenagers notwithstanding). Other species do this to some extent, but humans are the unquestioned champs at shaping their offspring. 
  1937. As you can see, a-life —  just like life itself — is rife with philosophical conundrums and radical, thought-provoking concepts, and that’s much of the reason I stay interested. But probably the biggest reason of all that I like a-life is hard to express, except by analogy: I get the same feeling peering through a glass screen into a computer world full of digital critters that I do peering through the bars of a cage at the zoo. The xenophile in me wants to see all the forms that life can take, and get to know the minds of every other being. I want to puzzle out the motivations behind a critter’s behavior, and I love that shock of recognition I experience every time I look into an animal’s eyes — even the ones that are so alien, like birds and reptiles and fish. Again, it’s this feeling that there are universal properties of life waiting to be discovered, properties that apply not only to life as it has evolved on Earth but to all possible life, including the digital variety.    Are any of these a-life explorations really alive? That’s an energetic and ongoing debate among a-lifers, of course, and the answer ultimately depends on the definition you pick for the word “life.” Rather than arguing whether metabolism is more necessary to life than reproduction, though, I like to duck the definition issue. I don’t really care too much whether we call them alive, I want to see if people react to them as if they’re alive. I want to see that shock of recognition occur when people and digital organisms collide. (What if “they” recognize “us”?!) It’s sort of the Turing Test approach for life: if it seems alive — if people can’t tell that it’s not alive — then no matter what we call it, people will treat it as if it’s alive. That I’d like to see.
  1938.     Recommended reading
  1939.     •    Artificial Life by Steven Levy (Pantheon Books, 1992).
  1940.     •    The Blind Watchmaker by Richard Dawkins 
  1941.     (W. W. Norton & Company, 1987).
  1942.     •    The Selfish Gene by Richard Dawkins (Oxford
  1943.     University Press, 1976).
  1944.     •    Seven Clues to the Origin of Life by A. G. Cairns-Smith
  1945.     (Cambridge University Press, 1985).
  1946.     •    ZOTZ! by Walter Karig (Rinehart & Company, Inc.,
  1947.     1947). 
  1948.     
  1949.  
  1950. MACINTOSH Q & A 
  1951. Q    Here’s a tidbit I stumbled across in Inside Macintosh Volume VI, page 3-10: the four Dialog Manager procedures CouldDialog, CouldAlert, FreeDialog, and FreeAlert are no longer supported. I use CouldDialog, and I happened to notice that it didn’t work right when I tested it under System 7, but I reported it as a bug. Now you tell us that it’s not guaranteed to work in System 7. I can’t recall a trap ever becoming suddenly unsupported like this. What’s the story? 
  1952. A    The system software engineers felt that CouldDialog, CouldAlert, FreeDialog, and FreeAlert didn’t do much good under System 6, since the Could calls never completely guaranteed that all dialog items were loaded in. These calls also caused problems in the beta versions of System 7. Relatively little software uses those traps anymore; like many things in Inside Macintosh Volume I, they’re relics of the days when Macintosh programmers had to deal with desk accessory and floppy disk support issues. So these calls were simply patched out. In the final System 7, the traps return without doing anything.
  1953. Q    I can’t get the black-and-white version of my lasso-type tool to work correctly with CalcMask and CopyMask. With CalcCMask it seems to work fine. What could I be doing wrong?  
  1954. A    CalcMask and CalcCMask are similar in that they both generate a one-bit mask given a source bitmap. With CalcCMask, though, a pixMap can be used in place of the source bitmap; the seedRGB determines which color sets the bits in the mask image. An easy mistake to make is to forget that CalcCMask expects a pointer to a BitMap data structure while CalcMask expects a pointer to the actual bit image. And unlike CalcCMask, which uses bounding rectangles for the image’s dimensions, CalcMask uses the bitmap’s rowBytes and pixel image offsets to determine the bounding Rects for the image. A typical call to these routines is as follows:
  1955. BitMap    source, mask;
  1956. CalcMask (source.baseAddr, mask.baseAddr, source.rowBytes, 
  1957.     mask.rowBytes, source.bounds.bottom-source.bounds.top, 
  1958.     source.rowBytes>>1);
  1959. CalcCMask (&source, &mask, &(*source).bounds, &(*mask).bounds, 
  1960.     &seedRGB, nil, 0);
  1961. One last thing to note when using CalcMask is that the width of the image is in words and not bytes. To learn more about these routines, see page 24 of Inside Macintosh Volume IV and page 72 of Inside Macintosh Volume V. Also, the Developer CD Series disc contains a sample, CalcCMask&CalcMask, that shows how to use these routines.
  1962. Q    How do I update the color table of my off-screen graphics world without destroying the picture? 
  1963. A    The recommended approach for changing the color table of an existing GWorld involves calling UpdateGWorld, passing either clipPix or stretchPix for gWorldFlags. When passed either of these constants, QuickDraw knows to update the pixels of the pixMap image. Even though the actual image isn’t changed, the flags are still needed to remap the pixels to their new colors.
  1964. Q    Are there any C++ or C compilation flags that will optimize performance of the Macintosh Quadra computers? Even when I use the “-NeedsMC68030” flag in MacApp, an investigation of the MABuild source files reveals that it sets compiler flags only for the 68020 optimization. If Quadra-specific compilation flags don’t exist, do you have any Quadra performance optimization suggestions? 
  1965. A    The current MPW compilers don’t have a 68040 performance optimization flag, though Apple’s future compilers will optimize code for the best possible ’040 performance. In the meantime, here are some tips on ’040 performance tuning:
  1966. •    Cache management for the ’040 can give you the biggest performance boost. Keep program loops inside the cache space, and flush the cache as seldom as possible. In most cases you’ll have small loops inside the 4K instruction cache.
  1967. •    You might get better performance by not calling BlockMove, because the system flushes the cache when you call it in case you’re moving code. If you’re moving data, the cache doesn’t need to be flushed, but the system can’t tell from the BlockMove call whether you’re moving code or data. Testing will help you determine whether you should call BlockMove or write your own transfer routine. The new MOVE16 opcode is used by the BlockMove trap when the system is running on an ’040 processor, but because of problems with this opcode in early ’040 processors, it requires special handling. For details, see the Macintosh Technical Note “Cache As Cache Can” (formerly #261).
  1968. •    Transcendental functions aren’t implemented in the 68040 hardware as they are in the 68881 chip used with the 68020 and 68030. Consequently, the functions are emulated in software, resulting in slower performance. If you suspect that your floating point performance is less than optimal, consider modifying your code to use functions supported by the internal ’040 FPU. See the Macintosh Technical Note “FPU Operations on Macintosh Quadra Computers” (formerly #317) for more information about this performance factor. Future MPW compiler and library releases will support faster transcendental operations and floating point–to–integer conversions.
  1969. Q    In the past we had heard of a problem using calloc and NewPtr in the same program. Is this true? 
  1970. A    There are a few difficulties, which you can deal with if you need to. The primary problem is that calloc and all the other malloc routines weren’t designed for the Macintosh platform. Macintosh memory management is designed around trying to squeeze as much as possible out of a limited memory area, which is why handles are the primary storage scheme in a Macintosh; they can move, and so greatly reduce memory fragmentation. Because the malloc tools return a pointer, they have to be located in a locked block, so they tend to lead to fragmentation if used with any other memory allocation calls (such as NewPtr). For this reason, any use of the malloc suite of allocation calls isn’t recommended for Macintosh programs. The only good reason to use them is if you’re porting a large body of code from other platforms; in this case, it may be a reasonable tradeoff to keep the old allocation code.
  1971. You should also be aware that most of the Macintosh malloc routines never free up memory. When you malloc some space, the routine must first allocate it from the Memory Manager. It allocates a large block of space using NewPtr and divides it internally for distribution in response to malloc calls. If, however, you eventually free all the blocks you allocated from this NewPtr block, the block won’t be released to the Memory Manager with the DisposPtr call. This means that once you allocate some memory with malloc, you won’t be able to free it and then use that memory from a Macintosh allocation call. Thus, if you had two phases to your program, one of which used the malloc calls extensively and the second which used Toolbox calls, the second phase wouldn’t be able to use memory freed by the first phase. That memory is still available in the malloc pool, of course; it simply can’t be used by NewPtr or NewHandle. The malloc routines supplied by THINK C work similarly, as described in their Standard Libraries Reference. Thus, mixing the C and Macintosh allocation routines requires special care.
  1972. Q    Why do I get error -903 (a PPC Toolbox noPortErr) when I send an Apple event to a running application with AESend? 
  1973. A    The isHighLevelEventAware bit of the sending application’s SIZE -1 resource (and SIZE 0 resource, if any) must be set.
  1974. Q    Sometimes the Alias Manager mistakes one volume for another. In particular, we’re experiencing problems getting aliases to volumes to work correctly with our AppleTalk Filing Protocol (AFP) server volumes. Here’s how I can duplicate the problem: 
  1975. 1.    I mount two server volumes from my AFP server: VolA and VolB.
  1976. 2.    I use the Finder to create an alias file for each volume.
  1977. 3.    I unmount VolA.
  1978. 4.    I open the alias file for VolA. However, when I do this, VolB (which is still mounted) is opened.
  1979. Is this a bug in the Alias Manager or did we implement something the wrong way in our server?
  1980. A    As noted in the Alias Manager chapter of Inside Macintosh Volume VI, the Alias Manager uses three criteria to identify a volume: the volume’s name, the volume’s creation date, and the volume’s type. If the Alias Manager can’t find a mounted volume that matches all three criteria, it tries again with just the volume’s creation date and the volume’s type. This second attempt finds volumes that have been renamed. If that attempt fails, the Alias Manager tries one last time on mounted volumes with the volume’s name and the volume’s type. If it can’t find a mounted volume with those three attempts and the alias is to an AFP volume (a file server), the Alias Manager assumes the volume is unmounted and attempts to mount it.
  1981. The problem you’re having is probably happening because both volumes have the same creation date and type. That will cause the Alias Manager to mistake VolA for VolB and VolB for VolA when it attempts to match by volume creation date and volume type. You can prevent the Alias Manager from making this mistake by making sure your server volumes all have unique volume creation dates.
  1982. This same behavior can be observed when partitioned hard disks use the same volume creation date for all partitions. If one partition isn’t mounted, the Alias Manager can mistake one disk partition for another. 
  1983. Q    I’m looking for a Macintosh Toolbox routine that will allow me to turn down the backlight on a Macintosh PowerBook from within a screen saver to prevent screen burn and save battery life. Is there such a thing? 
  1984. A    Turning down the backlight won’t prevent screen burn. Screen burn can be prevented only by either shutting the system off or letting the PowerBook enter its native sleep mode.
  1985. In an RGB monitor the phosphor that illuminates each pixel is what causes screen burn. By setting the pixels to black (the phosphor isn’t active) or rapidly changing the colors of an RGB screen (as with a screen saver), you can prevent screen burn. While effective on an RGB display, setting the pixels to black may actually cause screen burn on a PowerBook. The reason is that all the 
  1986. PowerBooks have a liquid crystal display (LCD), which can be burned by white pixels, black pixels, or repeating patterns on the screen over a period of time. For this type of display the only good way to save the screen is to power it off.
  1987. Only the Power Manager has access to the chip that shuts the screen off. After a certain amount of time, the Power Manager makes the function calls to put the system to sleep. (These calls are documented in Chapter 31 of Inside Macintosh Volume VI.) At this time the Power Manager signals the chip to turn the screen off. There’s no direct interface between the user and the chip to achieve this. It’s best to let the PowerBook’s native screen-saving mechanism (sleep mode, which shuts off the screen) work as is. This also has the benefit of saving the precious battery power that would be used by the screen saver.
  1988. By the way, if your PowerBook screen has ghost images because you’ve left it on too long without going into sleep mode, letting the screen sleep or shutting down your computer for at least 24 hours will probably make the ghost images go away. Although there’s no hard and fast rule, usually ghost images caused by your system being on for less than 24 hours won’t be permanent if the screen is rested for an equal amount of time. Any ghost images caused by the system being on for greater than 24 hours may be permanent. 
  1989. Q    How can I call Connect in AppleTalk Remote Access without an existing ARA connection file created by the Remote Access application?
  1990. A    This isn’t directly possible, because without the ARA connection file your program becomes tied to the underlying link tool. The file was implemented so that in the future, when there are different link tools for the different link types, the program will know the link type and tool, plus associated link-specific data to use. To connect without the ARA connection file requires knowledge of the link tool data structures used by each individual link tool. Because these may change, your code may break.
  1991. However, there’s a roundabout way of calling Connect. It requires that you first establish a connection using a document created by the ARA application. Next, make the IsRemote call, setting the optionFlags to ctlir_getConnectInfo (see page 11 of the AppleTalk Remote Access Application Programming Interface Guide). This will cause the information necessary to create the remote connection (connectInfoPtr) to be returned. You would then save this connectInfo data in your application, and when you want to connect sometime later, you would pass this data to the Connect call (in the connectInfo field).
  1992. Q    When we allocate space for a new file using AllocContig with an argument in multiples of clump size, we should be grabbing whole clumps at a time so that file length (and physical EOF) will be a multiple of clump size. What happens if we truncate a file by
  1993.     moving the logical EOF somewhere inside a clump? Inside Macintosh says disk sectors are freed at the allocation block level, so we could have a file whose physical EOF isn’t a multiple of clump size, right? Does AllocContig guarantee that the new bytes added are contiguous with the end of the existing file, or only that the newly added bytes are contiguous among themselves? If the logical and physical EOFs aren’t the same, does AllocContig subtract the difference before grabbing the new bytes, or do we get the extra bytes (between EOFs) as a bonus? 
  1994. A    You can create a file whose physical size isn’t a multiple of the clump size, if you try. When the file shrinks, the blocks are freed at the allocation level, without regard for the clump size. Therefore, if you set the logical EOF to a smaller value, you can create a file of any physical length.
  1995. There’s no guarantee that the allocated bytes will be contiguous with the current end of the file. The decisions that file allocation makes are as follows:
  1996. •    It always attempts to allocate contiguously, regardless of whether you’re explicitly doing a contiguous allocation. (If it can’t, it fails rather than proceeding if doing an AllocContig.)
  1997. •    It always attempts to keep the added space contiguous with the existing space, but it will forgo this before it will fragment the current allocation request (regardless of whether you’re calling Allocate or AllocContig).
  1998. So these are the actions that file allocation will take:
  1999. 1.    Allocate contiguous space immediately after the current physical end of file.
  2000. 2.    Allocate contiguous space separated from the current physical EOF.
  2001. 3.    Fail here if allocating contiguously.
  2002. 4.    Allocate fragmented space, where the first fragment follows the physical EOF.
  2003. 5.    Allocate fragmented space somewhere on the volume.
  2004. You don’t get “extra” space with AllocContig. It just does a basic allocation but makes sure any added blocks are contiguous. PBAllocContig does not guarantee that the space requested will be allocated contiguously. Instead, it first grabs all the room remaining in the current extent, and then guarantees that the remaining space will be contiguous. For example, if you have a 1-byte file with a chunk size of 10K and you try to allocate 20K, 10K-1 bytes will be added to the current file; the remaining 10K+1 bytes are guaranteed to be contiguous. 
  2005. Q    Inside Macintosh says that ROM drivers opened with OpenDriver shouldn’t be closed. However, it seems that any driver opened with OpenDriver should be closed when the application is done. Should our application close the serial port after using it? 
  2006. A    As a general rule, applications that open the serial driver with OpenDriver should do so only when they’re actually going to use it, and they should close it when they’re done. (Note that it’s important to do a KillIO on all I/O before closing the serial port!) There are a couple of reasons for closing the port when you’re finished using it. First, it conserves power on the Macintosh portable models; while the serial port is open the SCC drains the battery. Second, closing the serial port avoids conflicts with other applications that use it. Inside Macintosh is incorrect in stating that you shouldn’t close the port after issuing an OpenDriver call.
  2007. Most network drivers shouldn’t be closed when an application quits, on the other hand, since other applications may still be accessing the driver.  
  2008. Q    We’ve tried to put old CDs to productive use. We use them for coasters, but you can only drink so many Mountain Dews at once. We’ve even resorted to using them for skeet-shooting practice. Can you suggest other good uses for my old CDs? 
  2009. A    It’s not well known that stunning special effects in some films, such as Terminator 2, were produced with the aid of compact disc technology. For example, the “liquid metal” effect used for the evil terminator was nothing more than 5000 remaindered Madonna CDs, carefully sculpted into the shape of an attacking android. And did you know that dropping a CD into a microwave oven for five seconds or so produces an incredible “lightning storm” effect? (Kids, don’t try this at home; we’re trained professionals.) For ideas of what you can do with old CDs, see the letter on page 5.
  2010. Q    I need to launch an application remotely. How do I do this? The Process Manager doesn’t seem to be able to launch an application on another machine and the Finder Suite doesn’t have a Launch Apple event. 
  2011. A    What you need to do is use the OpenSelection Finder event. Send an OpenSelection to the Finder that’s running on the machine you want to launch the other application on, and the Finder will resolve the OpenSelection into a launch of the application. 
  2012. As you can see if you glance at the OpenSelection event in the Apple Event Registry, there’s one difficulty with using it for remote launching: You have to pass an alias to the application you want to launch. If the machine you want to launch the application on is already mounted as a file server, this isn’t important, since you can create an alias to that application right at that moment. Or, if you’ve connected in the past (using that machine as a server) you can send a previously created alias and it will be resolved properly by the Finder on the remote machine.
  2013. However, if you want to launch a file without logging on to the other machine as a server, you’ll need to use the NewAliasMinimalFromFullPath routine in the Alias Manager. With this, you’ll pass the full pathname of the application on the machine you want to launch on, and the Alias Manager will make an alias to it in the same way it does for unmounted volumes. The obvious drawback here is that you’ll need to know the full pathname of the application — but there’s a price to pay for everything. The FinderOpenSel sample code on the Developer CD Series disc illustrates this use of the NewAliasMinimalFromFullPath routine. 
  2014. Q    When I try to link my driver in MPW 3.2, it tells me  
  2015. ### Link: Error : Output must go to exactly one segment when using 
  2016. "-rt" (Error 98)
  2017. ### Link: Errors prevented normal completion.
  2018. In all my source files I have #pragma segment Main {C} and SEG 'Main' {Asm} directives. Why is it doing this? What factors determine how segments are assigned (besides the #pragma stuff)? How can I get it to work?
  2019. A    The problem is probably that you’re including modules from the libraries that are marked for another segment. Usually the culprit here is that some of the routines in StdCLib or some other library are marked for the StdIO segment. You can generally fix this by using the -sg option to merge segments, either explicitly by naming all the segments you want to merge, or implicitly by just putting everything into one segment. You probably want to do the latter, because you only want one segment anyway. Thus, what you should do is add the option “-sg Main” to your link line in place of the “-sn Main=segment” option. This will merge all segments into the Main segment, making it possible to link.
  2020. Q    How do I count the number of items in a dialog without System 7’s CountDITL? My solutions are either messy or dangerous: (1) Fiddle with the dialog’s item list, (2) Try to find out which DITL the dialog used and read the count from the DITL resource, or (3) Repeatedly call GetDItem until garbage is returned. :-(  
  2021. A    It’s possible to use the CountDITL function with system software version 6.0.4 or later if the Macintosh Communications Toolbox is installed, because it’s included as a part of the Toolbox. It’s also possible, as you’ve found, to use the first two bytes of the DITL resource to get the number of items in the item list (see Inside Macintosh Volume I, page 427). If the handle to your DITL resource is defined as ditlHandl, for example, you can get at the number of items as follows:  
  2022. short        **ditlHandl;
  2023. ditlHandl = (short **)ditlRez;
  2024. itemcount = (**ditlHandl) + 1;
  2025. Q    How does Simple Player determine whether a movie is set to loop or not? Movie files that are set to loop seem to have a string of 'LOOP' at the end of the 'moov' resource. Does Simple Player check 'LOOP'? 
  2026. A    Simple Player identifies whether movies are set to loop by looking within the user data atoms for the 'LOOP' atom, as you’ve noticed. It’s a 4-byte Boolean in which a value of 1 means standard looping and a value of 0 means palindrome looping. Your applications should add the user data 'LOOP' atom to the end of the movie when a user chooses to loop. We recommend this method as a standard mechanism for determining the looping status of a movie. If the 'LOOP' atom doesn’t exist, there’s no looping. The calls you need to access this information are GetMovieUserData, GetUserData, AddUserData, and RemoveUserData, as defined in the Movie Toolbox chapter of the QuickTime documentation. For more information see the Macintosh Technical Note “Movies 'LOOP' Atom.”
  2027. Q    Calling SetFractEnable seems to force the width tables to be recalculated regardless of the setting of the low-memory global FractEnable. We’re calling this routine at a central entry point for any document, as it’s a document-by-document attribute. We then unconditionally call SetFractEnable(false) on exit back to the event loop, to be nice to other applications. Calling SetFractEnable(false) seems to trigger the recalculation even though FractEnable is false. What’s the best way to get around this? 
  2028. A    Your observation is correct. The SetFractEnable call stuffs the Boolean parameter (as a single byte) into the low-memory global $BF4 and indiscriminately invalidates the cached width table by setting the 4-byte value at $B4C (LastSpExtra, a Fixed value) to -1. Obviously, it wasn’t anticipated that SetFractEnable could be called regularly with a parameter that often doesn’t change the previous setting. (By the way, the same observation applies to SetFScaleDisable.)
  2029. In your case, you may want to keep track of the fractEnable setting in your application and avoid redundant SetFractEnable calls. (Note that it’s not a good idea to use the above insider information and poke at $BF4 and $B4C on your own!)
  2030. You don’t need to think of other applications when resetting fractEnable; it belongs to those low-memory globals that are swapped in and out during context switches to other applications.
  2031. Q    It looks as though the Event Manager routine PostHighLevelEvent could be (ab)used to send low-level messages, like phony mouse clicks and keystrokes. Would this work? 
  2032. A    No; unfortunately, this won’t work. A few reasons why:
  2033. •    The only applications that will receive high-level events (and their descendants, like Apple events) are applications that have their HLE bit set in their SIZE resource. If you try to send (or post) an HLE to an older application you’ll get an error from the PPC Toolbox telling you that there’s no port available.
  2034. •    There’s no system-level translator to convert these things. There are currently translators to change some Apple events. Specifically, the Finder will translate any “puppet string” event into puppet strings for non-System 7 applications (odoc, pdoc, and quit), but these are very special.
  2035. •    The only way to send user-level events such as mouse clicks through HLEs is to use the Apple events in the MiscStndSuite shown in the Apple Event Registry. And all those events assume that the receiving application will do the actual translations to user actions themselves.
  2036. •    HLEs come in through the event loop. So even if it were possible (through some very nasty patching to WaitNextEvent) to force an HLE into a non–HLE-aware application, the event would come in with an event code of 23 (kHighLevel) and the targeted application would just throw it away.
  2037. So the answer is that you can’t send user-level events to an HLE-aware application. If you want to drive the interface of an old application in System 7, you have to use the same hacky method you used under all previous systems. This, by the way, is one of the main reasons why MacroMaker wasn’t revised for System 7. Apple decided that it wasn’t supportable and that we would wait for applications to update to System 7 and take advantage of third-party Apple event scripting systems.
  2038. Q    What’s the recommended method for allowing an AppleTalk node to send packets to itself using AppleTalk’s self-send mode (intranode delivery), assuming customers are running various versions of AppleTalk? There used to be a control panel called SetSelfSend that would turn on AppleTalk self-send mode at startup time. Should we use that control panel or should we use the PSetSelfSend function in our program to set the self-send flag ourselves? 
  2039. A    AppleTalk self-send mode requires AppleTalk version 48 or greater. You can check the AppleTalk version with Gestalt or SysEnvirons. All Macintosh models except for the Macintosh XL, 128, 512, and Plus have AppleTalk version 48 or greater in ROM.
  2040. The SetSelfSend control panel is still available on the Developer CD Series disc (Tools & Apps:Intriguing Inits/cdevs/DAs:Pete’s hacks-Moof!:SetSelfSend). However, we don’t recommend it as a solution if you need to use self-send mode in your program. Instead, you should use the PSetSelfSend function to turn self-send mode on with your program.
  2041. AppleTalk’s self-send mode presents a problem. Any changes made to the state of self-send will affect all other programs that use AppleTalk. That is, self-send mode is global to the system. Because of this, programs using self-send should follow these guidelines:
  2042. •    If you need self-send for only a brief period of time (for example, to perform a PLookupName on your own node), you should turn it on with PSetSelfSend (saving the current setting returned in oldSelfFlag), make the call(s) that require self-send, and restore self-send to its previous state.
  2043. •    If you need self-send for an extended period of time (for example, the life of your application) in which your program will give up time to other programs, you should turn self-send on and leave it on — do not restore it to its previous state! Since other programs running on your system (that aren’t well-behaved) may turn off self-send at any time, programs that require self-send should periodically check to make sure it’s still on with either PSetSelfSend or PGetAppleTalkInfo. Apple’s system software has no compatibility problems with self-send — that is, it doesn’t care if it’s on or off — so leaving it on won’t hurt anything. 
  2044. Q    In a version 2 picture, the picFrame is the rectangular bounding box of the picture, at 72 dpi. I would like to determine the bounding rectangle at the stored resolution or the resolution itself. Is there a way to do this without reading the raw data of the PICT resource itself? A    With regular version 2 PICTs (or any pictures), figuring out the real resolution of the PICT is pretty tough. Applications use different techniques to save the information. But if you make a picture with OpenCPicture, the resolution information is stored in the headerOp data, and you can get at this by searching for the headerOp opcode in the picture data (it’s always the second opcode in the picture data, but you still have to search for it in case there are any zero opcodes before it). Or you can use the Picture Utilities Package to extract this information.
  2045. With older picture formats, the resolution and original bounds information is sometimes not as obvious or easily derived. In fact, in some applications, the PICT’s resolution and original bounds aren’t stored in the header, but rather in the pixel map structure(s) contained within the PICT.
  2046. To examine these pixMaps, you’ll first need to install your own bitsProc, and then manually check the bounds, hRes, and vRes fields of any pixMap being passed. In most cases the hRes and vRes fields will be set to the Fixed value 0x00480000 (72 dpi); however, some applications will set these fields to the PICT’s actual resolution, as shown in the code below. 
  2047. Rect            gPictBounds;
  2048. Fixed        gPictHRes, gPictVRes;
  2049.  
  2050. pascal void ColorBitsProc (srcBits, srcRect, dstRect, mode, 
  2051.     maskRgn)
  2052. BitMap        *srcBits;
  2053. Rect            *srcRect, *dstRect;
  2054. short        mode;
  2055. RgnHandle    maskRgn;
  2056. {
  2057.     PixMapPtr    pm;
  2058.     pm = (PixMapPtr)srcBits;
  2059.     gPictBounds = (*pm).bounds;
  2060.     gPictHRes = (*pm).hRes;        /* Fixed value */
  2061.     gPictVRes = (*pm).vRes;        /* Fixed value */
  2062. }
  2063. void FindPictInfo(picture)
  2064. PicHandle    picture;
  2065. {
  2066.     CQDProcs        bottlenecks;
  2067.     SetStdCProcs (&bottlenecks);
  2068.     bottlenecks.bitsProc = (Ptr)ColorBitsProc;
  2069.     (*(qd.thePort)).grafProcs = (QDProcs *)&bottlenecks;
  2070.     DrawPicture (picture, &((**picture).picFrame));
  2071.     (*(qd.thePort)).grafProcs = 0L;
  2072. }
  2073. Q    The code I added to my application’s MDEF to plot a small icon in color works except when I hold the cursor over an item with color. The color of the small icon is wrong because it’s just doing an InvertRect. When I drag over the Apple menu, the menu inverts behind the icon but the icon is untouched. Is this done by brute force, redrawing the small icon after every InvertRect?  
  2074. A    The Macintosh system draws color icons, such as the Apple icon in the menu bar, every time the title has to be inverted. First InvertRect is called to invert the menu title, and then PlotIconID is called to draw the icon in its place. The advantage of using PlotIconID is that you don’t have to worry about the depth and size of the icon being used. The system picks the best match from the
  2075.     family whose ID is being passed, taking into consideration the target rectangle and the depth of the device(s) that will contain the icon’s image.
  2076. The Icon Utilities call PlotIconID is documented in the Macintosh Technical Note “Drawing Icons the System 7 Way” (formerly #306); see this Note for details on using the Icon Utilities calls. 
  2077. Q    The cursor flashes when the user types in TextEdit fields in my Macintosh application. This is done in TEKey. I notice that most programs hide the cursor once a key is pressed. I don’t care for this because then I have to move the mouse to see where I am. Is this a typical fix for this problem and an accepted practice? 
  2078. A    There’s very little you can do to avoid this. The problem is that every time you draw anything to the screen, if the cursor’s position intersects the rectangle of the drawing being done, QuickDraw hides the cursor while it does the drawing, and then shows it again to keep it from affecting the image being drawn beneath it. Every time you enter a character in TextEdit, the nearby characters are redrawn. Usually this is invisible because the characters just line up on top of their old images, but if the cursor is nearby and visible, it will flicker while it’s hidden to draw the text. This is why virtually all programs call ObscureCursor when the user types. Also, most users don’t want the image of the cursor obscuring text they might be referring to, yet they don’t want to have to move it away and then move it back to make selections. Because it’s so commonplace, hiding the cursor probably won’t bother your users; in fact, they might very well prefer the cursor hidden. This, combined with the fact that there’s very little you can do to help the flickering, suggests that you should obscure the cursor while the user types.
  2079. Q    We’re using Apple events with the PPC Toolbox. We call StartSecureSession after PPCBrowser to authenticate the user’s identity. The user identity dialog box is displayed and everything looks good. However, in the first AESend call we make, the user identity dialog is displayed again. (It isn’t displayed after that.) Why is this dialog being displayed from AESend when I’ve already authenticated the user identity with StartSecureSession? 
  2080. A    First, a few PPC facts:
  2081. •    When a PPC session is started, StartSecureSession lets the user authenticate the session (if the session is with a program on another Macintosh) and returns a user reference number for that connection in the userRefNum field of the PPCStartPBRec. That user reference number can be used to start another connection (using PPCStart instead of StartSecureSession) with the same remote Macintosh, bypassing the authentication dialogs.
  2082. •    User reference numbers are valid until either they’re deleted with the DeleteUserIdentity function or one of the Macintosh systems is restarted.
  2083. •    If the name and password combination used to start a session is the same as that of the owner of the Macintosh being used, the user reference number returned refers to the default user. The default user reference number normally is never deleted and is valid for connections to the other Macintosh until it’s deleted with DeleteUserIdentity or one of the Macintosh systems is restarted.
  2084. With that out of the way, here’s how user reference numbers are used when sending high-level events and Apple events: When you first send a high-level event or an Apple event to another Macintosh, the code that starts the session with the other system doesn’t attempt to use the default user reference number or any other user reference number to start the session, and it doesn’t keep the user reference number returned to it by StartSecureSession. The session is kept open for the life of the application, or until the other side of the session or a network failure breaks the connection.
  2085. When you started your PPC session, StartSecureSession created a user reference number that could be used to start another PPC session without authentication. However, the Event Manager knows nothing of that user reference number, so when you send your first Apple event, the Event Manager calls StartSecureSession again to authenticate the new session. Since there isn’t any way for you to pass the user reference number from the PPC session to the Event Manager to start its session, there’s nothing you can do about this behavior. 
  2086. Q    How can I make my ImageWriter go faster? 
  2087. A    To make your ImageWriter go blazingly fast, securely tie one end of a 12-foot nylon cord around the printer and the other end around your car’s rear axle. If your car has a manual transmission, hold the clutch in and race your car’s engine until the tachometer is well into the red zone. Slip the clutch and off you go! If your car has an automatic transmission, you can approach the same results by leaving plenty of slack in the rope before peeling out. 
  2088. KON & BAL’S PUZZLE PAGE 
  2089. A MICRO BUG
  2090. KONSTANTIN OTHMER AND BRUCE LEAK 
  2091. See if you can solve this programming puzzle, presented in the form of a dialog between Konstantin Othmer (KON) and Bruce Leak (BAL). The dialog gives clues to help you. Try to guess this one before BAL does. To figure out your score, see “Scoring” at the end. 
  2092. KON    Have you heard of Spaceward Ho!?
  2093. BAL    Yeah, it’s that awesome conquer-the-galaxy game from Delta Tao. That game has done more to hurt productivity around here than pinball. 
  2094. KON    After they released it, they got several calls complaining about a crash. They tried to reproduce the crash but couldn’t.
  2095. BAL    They don’t have that SADE MultiFinder installed, do they?
  2096. KON    Very funny.
  2097. BAL    How is their configuration different from the configuration of customers with the problem?
  2098. KON    Everyone who complained had a 4-meg IIsi, ci, or fx. And the Delta Tao folks tested those configurations.
  2099. BAL    Hmmm. How does it crash? Can you get into MacsBug? 
  2100. KON    That’s part of the problem, the customers who have the crash aren’t programmers and don’t have MacsBug. The crash is with an Error 01, a bus error.
  2101. BAL    Well, find one of the machines it crashes on, install MacsBug, and see what’s wrong. How hard can it be?
  2102. KON    So you fly to Bismarck, North Dakota, and install MacsBug, and it doesn’t crash anymore. Pretty hard, I guess.
  2103. BAL    Hmmm. Just MacsBug? Are there any INITs running?
  2104. KON    The machine has only MacsBug, nothing else.
  2105.  
  2106. BAL    And you never set a breakpoint, or an A-trap break, or anything?
  2107. KON    Nope.
  2108. BAL    Do you have a FirstTime macro?
  2109. KON    Nope.
  2110. BAL    So how could MacsBug be interfering? 
  2111. KON    I can’t help you there. It’s your puzzle.
  2112. BAL    Well, MacsBug initializes some low-memory values and rearranges things above BufPtr. Is the app doing anything funny that might depend on some low mems?
  2113. KON    The app follows every programming convention dictated by Inside Macintosh and the Developer Support Center. They even follow every human interface guideline and . . .
  2114. BAL    Yeah, yeah, yeah. Impossible. So MacsBug is installed, but it’s never invoked.
  2115. KON    Yep.
  2116. BAL    What’s the app doing when it crashes?
  2117. KON    It’s in the middle of a bunch of calculations — you know, how many ships got destroyed in battle, how fast planets’ populations are growing, what the computer players are doing, that kind of thing.
  2118. BAL    Well, MacsBug causes the app to launch in a different place.
  2119. KON    OK.
  2120. BAL    MacsBug loads above BufPtr, so everything else loads lower. Maybe the app reads past the end of its heap. When MacsBug is in, it’s lower in the heap, so the app reads somewhere in MacsBug territory. When MacsBug is out, the app reads past the end of RAM and causes a bus error.
  2121. KON    Nice theory. But how do you verify that that’s the problem without MacsBug?
  2122. BAL    Launch another app first.
  2123. KON    Then the Ho! will load even lower in memory. It won’t crash.
  2124. BAL    Use MicroBug. 
  2125. KON    You mean that thing that comes up when you push the NMI switch and MacsBug isn’t installed? Where is that documented?
  2126. BAL    I don’t know. It can’t be too hard to figure it out, though.
  2127. KON    Well, the only command I know is G for “Go.” What else will it let me do?
  2128.  
  2129. BAL    You can look at memory and registers, you can set the PC, and you can even exit to the shell. Let’s try a Total Display, TD. MicroBug responds with this: 
  2130. 000C30  0000 0000 0074 0000  FFFF 0100 0000 00C4
  2131. 000C40  0000 FFFF 0000 0000  00AD E5D7 0074 0000
  2132. 000C50  006E B2D0 0074 0A80  006E 9EB8 0057 0308
  2133. 000C60  0000 0000 0074 0BAC  006E 49F8 006E 49E0
  2134. 000C70  000A D96A 2014 0000  0000 0000 0000 0000
  2135. 000C80  0000 0000 5444 0020  0020 0020 0020 0020
  2136. KON    It looks like it’s dumping memory from C30.
  2137. BAL    Yeah, from SysEqu.a we see that C30 is SEVarBase. The system exception vars go up to CBF. I guess that’s where the exception vectors dump the processor state when an exception occurs.
  2138. KON    Since the system sets up the SEVars, they’re set up on any exception regardless of the debugging environment. Using MacsBug, we can figure out that the first two lines are registers D0-D7, the next two lines are 
  2139. A0-A7, then the PC, then the status register, then what?
  2140. BAL    I don’t know, but at C84, it looks like what we typed: TD.
  2141. KON    You could read a book written in ASCII!
  2142. BAL    Let’s try something else, maybe it can do math. Let’s try DM PC-10.
  2143. KON    It works.
  2144. BAL    Yeah. In addition to the PC, it knows registers as RA0 or RD0 (but you set registers with a line like D0 = 5, not RD0 = 5). You can set memory using SM.
  2145. KON    Anyway, back to the Ho!
  2146. BAL    So in the Ho! I can look at the PC and the registers and figure out that it’s looking past the end of memory.
  2147. KON    You can’t do an IL or an IP, so you can’t prove that bogus values in a register are causing the bus error. 
  2148. BAL    I go into MacsBug on my PowerBook and disassemble the code with the DH command. 
  2149. KON    How do you find the problem code in the source?
  2150. BAL    I pattern-match using the Find command on the PowerBook. Once I find the problem in MacsBug on the PowerBook, I’m golden.
  2151. KON    Right! Here’s the scoop: One of their pointers got messed up and they were reading off the end of their heap. The value they read had only a minor impact on the calculations, so no one noticed the problem. When MacsBug 
  2152. was in, they were reading in MacsBug’s code space, which is a valid address and didn’t cause a bus error. The reason it was reported on 4-meg IIsi’s, ci’s, and fx’s is that only ’030 or ’040 machines that have the ci-class ROM cause bus errors when reading a valid RAM address that doesn’t have RAM installed. 
  2153. BAL    And reading off the end of RAM on an 8-meg machine in 24-bit addressing mode just reads the ROM, which is valid.
  2154. KON    Instead of this MicroBug detour, you could just write a flag value on the screen from various interesting places in the source. The flag value when you crash tells you where you were last. 
  2155. BAL    Yeah, but that’s been done before. And it doesn’t give us a good excuse to discuss MicroBug.
  2156. KON    OK, Mr. MicroBug, what’s the fewest keystrokes you can use to do an ExitToShell from MicroBug?
  2157. BAL    Well, ExitToShell is Toolbox trap A9F4. The Toolbox trap table begins at $E00, so you can calculate the address of the trap and then use the G command.
  2158. KON    Once you have the address, that’s a minimum of seven keystrokes. You like to type a lot.
  2159. BAL    I need some time to think about that one.
  2160. KON    While you’re thinking, how do you restart from MicroBug?
  2161. BAL    Let’s just leave everyone in suspense until next time.
  2162. KON    Nasty.
  2163. BAL    Yeah. 
  2164. INDEX    A
  2165. AccessContainedObjects, TAppleObjectDispatcher and  75
  2166. AddResource, MakeStandAlone tool and  107
  2167. AEDisposeToken, Apple events and  68
  2168. 'aedt' resource, UAppleObject and  77–78
  2169. AESend, Macintosh Q & A  122, 132–133
  2170. Alexander, Pete  84
  2171. aliases, Macintosh Q & A  122–123
  2172. Alias Manager, Macintosh Q & A  122–123
  2173. AllocContig, Macintosh Q & A  124–125
  2174. animation  53–57
  2175. “Another Take on Globals in Standalone Code” (Rollin)  89–115
  2176. Apple Event Manager, Apple events and  59, 60–61, 62–64
  2177. Apple event object model, objects and  58–83
  2178. “Apple Event Objects and You” (Clark), correction to  6
  2179. Apple Event Registry  66–67
  2180. Apple events
  2181. Macintosh Q & A  122, 126–127, 132–133
  2182. objects and  58–83
  2183. Apple menu, Macintosh Q & A  131–132
  2184. AppleTalk, Macintosh Q & A  129–130
  2185. AppleTalk Filing Protocol (AFP), Macintosh Q & A  122–123
  2186. AppleTalk Remote Access, Macintosh Q & A  124
  2187. application parameters, global variables and  92    artificial life, Johnson ponders  116–119
  2188. Artificial Life III (Santa Fe, NM)  116
  2189. assembly language, components and C++ classes compared  40
  2190. B
  2191. backlight, Macintosh Q & A  123–124
  2192. battery, Macintosh Q & A  123–124
  2193. “Be Our Guest” (Van Brink)  37–40
  2194. Berdahl, Eric M.  58
  2195. “Better Apple Event Coding Through Objects” (Berdahl)  58–83
  2196. BlockMove, MakeStandAlone tool and  105
  2197. C
  2198. C
  2199. components and C++ classes compared  40
  2200. Macintosh Q & A  121
  2201. C++
  2202. Apple events and  58–83
  2203. Macintosh Q & A  121
  2204. C++ classes, components compared to  37–40
  2205. CalcCMask, Macintosh Q & A  120
  2206. CalcMask, Macintosh Q & A  120
  2207. CalculateOffset, StART system and  101, 112
  2208. callbacks, time bases and  49–52
  2209. CallComponentFunction, components and  17, 20, 30
  2210. CallComponentFunctionWith-Storage, components and  17, 20, 30
  2211. CallMeWhen, time bases and  50, 51    
  2212.  
  2213. CallProcPtr, MakeStandAlone tool and  104
  2214. can do function, components and  12
  2215. CaptureComponent, Math component and  25
  2216. CDs, Macintosh Q & A  126
  2217. Clark, Richard  6
  2218. classes
  2219. Apple events and  68–70, 79–83
  2220. C++  37–40
  2221. CloseA5World, global variables and  96
  2222. CloseComponent, components and  20, 22, 28
  2223. CloseComponentResFile, components and  30
  2224. close function, components and  12
  2225. clumps, Macintosh Q & A  124–125
  2226. color, Macintosh Q & A  131–132
  2227. color tables, Macintosh Q & A  121
  2228. CompareAppleObjects, MAppleObject and  72
  2229. CompareObjects, TAppleObjectDispatcher and  76
  2230. ComponentCallNow, Math component and  16–17
  2231. ComponentFunctionImplemented, Math component and  25
  2232. Component Manager
  2233. components and  7–36
  2234. components and C++ classes compared  37–40
  2235. time bases and  45
  2236. Component Registry group (Apple Computer, Inc.)  10
  2237. components
  2238. C++ classes compared to  37–40
  2239. writing and debugging  7–36    ComponentSetTarget, Math component and  25
  2240. Connect, Macintosh Q & A  124
  2241. ConvertAppToStandAloneCode, MakeStandAlone tool and  102, 103, 107
  2242. CopyBits, animation and  54, 55, 56, 57
  2243. CopyDeepMask, print hint  84
  2244. CopyHostQD, StARTGlue.a.o and  110–111
  2245. CopyMask
  2246. Macintosh Q & A  120
  2247. print hint  84
  2248. CouldAlert, Macintosh Q & A  120
  2249. CouldDialog, Macintosh Q & A  120
  2250. CountContainedObjects, MAppleObject and  71–72
  2251. CountDITL, Macintosh Q & A  127–128
  2252. CountObjects, TAppleObjectDispatcher and  75–76
  2253. CPlusTESample, Apple events and  78–79
  2254. CreateResFile, MakeStandAlone tool and  106
  2255. CurResFile, components and  30
  2256. cursor, Macintosh Q & A  131–132
  2257. D
  2258. Darwin, Charles Robert  117–118
  2259. data hiding, components and C++ classes compared  38
  2260. debugging, components and  7–36
  2261. declarations, components and C++ classes compared  37–38
  2262. Delta Tao  134
  2263. Dialog Manager, Macintosh Q & A  120
  2264. dialogs, Macintosh Q & A  127–128    dispatcher, components and  13, 17–19
  2265. DisposeHandle, MakeStandAlone tool and  106
  2266. DisposeToken, TAppleObjectDispatcher and  76
  2267. DITL resource, Macintosh Q & A  127–128
  2268. DoAdd, MoMath and  23
  2269. DoAppleEvent, MAppleObject and  72–73
  2270. DoDivide, Math component and  16, 17, 19, 22, 24, 25
  2271. DoMultiply, Math component and  16, 24, 25
  2272. DoneWithGlobals, StART system and  100, 101, 111
  2273. drivers, Macintosh Q & A  125–126, 127
  2274. DTS.Draw, animation and  57
  2275. E
  2276. EnslaveMovies, time bases and  48
  2277. Entry, StART system and  101
  2278. EOFs, Macintosh Q & A  124–125
  2279. ErrorExit, MakeStandAlone tool and  102, 103, 104, 106
  2280. Event Manager, Macintosh Q & A  129
  2281. evolution, Johnson ponders  117–118, 119
  2282. exception handling, UAppleObject and  70
  2283. ExtractObject, TAppleObjectDispatcher and  75
  2284. F
  2285. “Fast Component Dispatch” (Krueger)  20
  2286. FillChar, MakeStandAlone tool and  105    
  2287.  
  2288. Finder
  2289. animation and  53
  2290. Macintosh Q & A  126–127
  2291. MakeStandAlone tool and  106
  2292. FindNextComponent, components and  20, 28, 30
  2293. FlipPieces, time bases and  50–51
  2294. FractEnable, Macintosh Q & A  128
  2295. FrameRect, animation and  53–54
  2296. FreeAlert, Macintosh Q & A  120
  2297. FreeDialog, Macintosh Q & A  120
  2298. G
  2299. GDevices, animation and  54, 55, 56
  2300. “genetic takeover,” Johnson ponders  118
  2301. GetAppleClass, MAppleObject and  71
  2302. GetComponentInfo, time bases and  45
  2303. GetComponentInstanceA5, components and  29
  2304. GetComponentRefcon, components and  29, 30
  2305. GetContainedObject, MAppleObject and  72
  2306. GetDefaultAppleObject, MAppleObject and  73
  2307. GetDispatcher, TAppleObjectDispatcher and  77
  2308. GetDItem, Macintosh Q & A  127–128
  2309. GetMovieTimeBase, time bases and  45
  2310. GetSAA5, StART system and  101, 111–112
  2311. GetTarget, TAppleObjectDispatcher and  76    GetTimeBaseFlags, time bases and  46–47
  2312. GetTimeBaseMasterClock, time bases and  45
  2313. GetTimeBaseMasterTimeBase, time bases and  45
  2314. GetTokenObjectDisposal, TAppleObjectDispatcher and  76
  2315. GetWindowIndex, correction to  6
  2316. global variables, MPW and  89–115
  2317. GoToBeginningOfMovie, time bases and  49
  2318. GotRequiredParameters, MAppleObject and  73
  2319. “Graphical Truffles” (Lee)  53–57
  2320. GWorlds, animation and  54
  2321. H
  2322. HandleAppleEvent, TAppleObjectDispatcher and  75
  2323. I
  2324. icons, Macintosh Q & A  131–132
  2325. imageable area, print hint  86–87
  2326. ImageWriter, Macintosh Q & A  133
  2327. implementation, components and C++ classes compared  39–40
  2328. inheritance, components and C++ classes compared  38–39
  2329. InitAppleObject, MAppleObject and  73
  2330. InitGraf, OpenA5World and  97
  2331. Install, TAppleObjectDispatcher and  74–75
  2332. InstallAppleEventHandler, TAppleObjectDispatcher and  77
  2333. InvertRect, Macintosh Q & A  131–132    J
  2334. Johnson, Dave  116
  2335. K
  2336. King, Casey  7–8
  2337. “KON & BAL’s Puzzle Page” (Othmer and Leak)  134–137
  2338. Krueger, Mark  20
  2339. L
  2340. Lamarckian evolution, Johnson ponders  117–118, 119
  2341. Lamarck, Jean-Baptiste-Pierre-Antoine de Monet de  117–118, 119
  2342. Laser Prep, print hint  87
  2343. LaserWriter, print hint  84, 85
  2344. Launch Apple event, Macintosh Q & A  126–127
  2345. Leak, Bruce  134
  2346. Lee, Edgar  53
  2347. LISP, components and C++ classes compared  40
  2348. 'LOOP', Macintosh Q & A  128
  2349. M
  2350. MABuild, Macintosh Q & A  121
  2351. MacApp, Macintosh Q & A  121
  2352. Macintosh Operating System
  2353. components and C++ classes compared  40
  2354. standalone code and  89–90
  2355. Macintosh Q & A  120–133
  2356. Macintosh Toolbox, Macintosh Q & A  123–124
  2357. MacsBug
  2358. components and  32–33
  2359. KON & BAL puzzle  134, 135, 136–137
  2360. MakeStandAlone tool, StART system and  98, 100, 102–107, 108, 109
  2361. MAppleObject, Apple events and  61, 68, 69, 70, 71–73    
  2362.  
  2363. “marching ants” effect, animation and  53–54
  2364. Math component  16–26
  2365. MCDoAction, time bases and  46
  2366. MCMovieChanged, time bases and  46
  2367. md, print hint  87
  2368. MDEF, Macintosh Q & A  131–132
  2369. “memes,” Johnson ponders  118
  2370. messages, Macintosh Q & A  129
  2371. MicroBug, KON & BAL puzzle  135, 136, 137
  2372. MoMath, Math component and  22–23
  2373. 'moov' resource, Macintosh Q & A  128
  2374. movies
  2375. Macintosh Q & A  128
  2376. QuickTime and  41–52
  2377. MoviesTask, time bases and  51
  2378. Movie Toolbox, time bases and  41–52
  2379. MPW, global variables and  89–115
  2380. MPW 3.2, Macintosh Q & A  127
  2381. multilayer off-screen worlds, animation and  55–57
  2382. N
  2383. NewCallBack, time bases and  49, 50, 52
  2384. NewGWorld, animation and  54, 55
  2385. NewHandle, MakeStandAlone tool and  104
  2386. NewPtr, Macintosh Q & A  122
  2387. NuMath, Math component and  24, 25, 26
  2388. NuMathComponent, Math component and  24
  2389. O
  2390. object-oriented programming, Apple events and  60–64    objects, Apple events and  58–83
  2391. Object Support Library (OSL), Apple events and  61–64, 67–68
  2392. off-screen drawing, animation and  54–55
  2393. off-screen graphics worlds, Macintosh Q & A  121
  2394. OpenA5World, global variables and  94–97, 112–114
  2395. OpenComponent, components and  20, 21, 28, 29
  2396. OpenComponentResFile, components and  30
  2397. OpenDriver, Macintosh Q & A  125–126
  2398. open function, components and  12
  2399. OpenResFile, MakeStandAlone tool and  102, 106
  2400. Ortiz, Guillermo A.  41–42
  2401. Othmer, Konstantin  134
  2402. P
  2403. PenMode, animation and  53–54
  2404. PenPat, animation and  53–54
  2405. Persist.p, StART system and  98–99, 100–101
  2406. PICT resource, Macintosh Q & A  130–131
  2407. pictures
  2408. Macintosh Q & A  121, 130–131
  2409. print hint  85–86
  2410. PostHighLevelEvent, Macintosh Q & A  129
  2411. PPCBrowser, Macintosh Q & A  132–133
  2412. PPC Toolbox, Macintosh Q & A  132–133
  2413. “Print Hints” (Alexander)  84–88
  2414. printing, print hints  84–88
  2415. Printing Manager, print hint  85–86
  2416. Process Manager, Macintosh Q & A  126–127    PSetSelfSend, Macintosh Q & A  129–130
  2417. Puzzle Page  134–137
  2418. Q
  2419. Q & A, Macintosh  120–133
  2420. QuickDraw
  2421. animation and  55, 56
  2422. global variables and  92, 97
  2423. QuickTime 1.0, components and  7–36
  2424. QuickTime 1.5  41–52
  2425. R
  2426. RegisterComponent, components and  16
  2427. RegisterComponentResource, components and  16
  2428. register function, components and  13
  2429. Reinstaller, components and  35–36
  2430. ReleaseResource, OpenA5World and  96
  2431. RememberA0, global variables and  92–93
  2432. ResEdit, MakeStandAlone tool and  106
  2433. ResolveSpecifier, TAppleObjectDispatcher and  77
  2434. RestoreA4, global variables and  93
  2435. RmveResource, MakeStandAlone tool and  106
  2436. Rollin, Keith  89
  2437. ROM drivers, Macintosh Q & A  125–126
  2438. S
  2439. scripting, Apple events and  58–83
  2440. Segment Loader, global variables and  91, 94
  2441. segments, Macintosh Q & A  127    
  2442.  
  2443. serial port, Macintosh Q & A  125–126
  2444. server volumes, Macintosh Q & A  122–123
  2445. SetA5, MakeStandAlone tool and  104
  2446. SetComponentRefcon, components and  29
  2447. SetDefaultAppleObject, MAppleObject and  73
  2448. SetFractEnable, Macintosh Q & A  128
  2449. SetMovieMasterClock, time bases and  44
  2450. SetMovieRate, time bases and  46
  2451. SetMovieTime, time bases and  44
  2452. SetOrigin, print hint  85
  2453. SetResAttrs, MakeStandAlone tool and  107
  2454. SetSelfSend, Macintosh Q & A  129–130
  2455. SetTBLoop, time bases and  46–47
  2456. SetTimeBaseFlags, time bases and  46–47
  2457. SetTimeBaseMasterClock, time bases and  44
  2458. SetTimeBaseTime, time bases and  44
  2459. SetTokenObjectDisposal, TAppleObjectDispatcher and  76
  2460. SetupA4, global variables and  92–93
  2461. ShiftMoviePieces, time bases and  51
  2462. Simple Player, Macintosh Q & A  128
  2463. Spaceward Ho! (Delta Tao), KON & BAL puzzle  134–137
  2464. SplitMovie, time bases and  51
  2465. spool-a-page, print-a-page method, print hint  84–85
  2466. srcCopy transfer mode, animation and  56    srcXor transfer mode, animation and  53–54
  2467. standalone code, MPW and  89–115
  2468. StARTGlue.a.o, StART system and  100, 101, 105, 107–112
  2469. StART system, global variables and  97–114
  2470. StartMovie, time bases and  46, 49
  2471. StartSecureSession, Macintosh Q & A  132–133
  2472. StuffDescriptor, TAppleObjectDispatcher and  75
  2473. Symantec  89
  2474. symbolic debugging, components and  31–32
  2475. System 7, Macintosh Q & A  120, 127–128
  2476. System 7.1, components and  7–36
  2477. T
  2478. TAppleObjectDispatcher, UAppleObject and  73–77
  2479. TArea, Apple events and  66
  2480. target function, components and  13
  2481. “Techniques for Writing and Debugging Components” (Woodcock and King)  7–36
  2482. TEditText, Apple events and  79–83
  2483. TEKey, Macintosh Q & A  132
  2484. TextEdit, Macintosh Q & A  132
  2485. thing dcmd, components and  32–33
  2486. Things! control panel, components and  33–35
  2487. THINK solution, global variables and  92–94, 112–114
  2488. 32-Bit QuickDraw, animation and  54
  2489. TImage, Apple events and  66
  2490. time bases, QuickTime and  41–52    TimeBaseSimple, time bases and  44–47
  2491. TimeBaseSlave, time bases and  47–52
  2492. “Time Bases: The Heartbeat of QuickTime” (Ortiz)  41–52
  2493. Time Manager, time bases and  41
  2494. TPixel, Apple events and  66
  2495. TScanLine, Apple events and  66
  2496. U
  2497. UAppleObject, Apple events and  61, 62, 70–78
  2498. UnionRect, animation and  55
  2499. UseGlobals, StART system and  100, 101, 102, 109–110
  2500. UseResFile, components and  30
  2501. user identity dialog box, Macintosh Q & A  132–133
  2502. V
  2503. ValidateCode, MakeStandAlone tool and  103–104
  2504. Van Brink, David  37
  2505. version function, components and  12
  2506. “Veteran Neophyte, The” (Johnson)  116–119
  2507. volumes, Macintosh Q & A  122–123
  2508. W, X, Y, Z
  2509. width tables, Macintosh Q & A  128
  2510. Woodcock, Gary  7–8
  2511. WriteRectToken, correction to  6
  2512. WriteResource, MakeStandAlone tool and  107    
  2513.  
  2514. WANT TO WRITE FOR develop?
  2515. YOUR NAME AND ELECTRONICALLY RETOUCHED
  2516. PHOTO HERE    We’re always looking for people who might be interested in writing an article or a column for develop. If you’d like to take advantage of this opportunity to spotlight and distribute your code to thousands of developers of Apple products, with a result that you’ll be proud to show your colleagues (and Mom), please read on.
  2517. WHAT TO WRITE
  2518. Think about writing an article like the ones you see in this issue, usually ranging from 6 to 30 pages in length, or just a short column (say, 2 to 4 pages). Typically you’ll expound on source code that readers will get on the Developer CD Series disc.
  2519. We encourage authors to write in a light, humorous style; we’ll try to refrain from editing out your jokes!
  2520. WHO AND WHAT CAN HELP YOU
  2521. A content editor and technical editor will work with you on your article, and an illustrator will work on any illustrations. A review board will give feedback on your first draft, and numerous technical reviewers will look for errors. Once things come together in the final draft, a copyeditor will go over it all.
  2522. Not only will you have an opportunity to review your article at several stages, we rely on you to answer questions and in general to review all changes carefully.
  2523. WHAT TO DO NEXT
  2524. Send an abstract and an outline to AppleLink DEVELOP, or to Caroline Rose, Apple Computer, Inc., 20525 Mariani Avenue, M/S 75-2B, Cupertino, CA 95014. We can send you our Author’s Guidelines along with information about timing and the scoop on our generous incentive program.
  2525. So don’t just sit on those great ideas of yours . . . send ’em along to us!    
  2526.  
  2527. HOW'RE WE DOING?
  2528. We'd love to hear how you feel about develop. If you have any questions, suggestions, or even gripes, please don't keep them to yourself. (Be sure to include your name, company name, address, and phone number.)
  2529. Send editorial suggestions or comments to AppleLink DEVELOP or to:
  2530. Caroline Rose
  2531. Apple Computer, Inc.
  2532. 20525 Mariani Avenue, M/S 75-2B
  2533. Cupertino, CA  95014
  2534. AppleLink:  CROSE
  2535. Internet:  crose@applelink.apple.com
  2536. Fax:  (408)974-7084
  2537.     Send technical questions about develop to:
  2538. Dave Johnson
  2539. Apple Computer, Inc.
  2540. 20525 Mariani Avenue, M/S 75-2B
  2541. Cupertino, CA  95014
  2542. AppleLink:  JOHNSON.DK
  2543. Internet:  dkj@apple.com
  2544. CompuServe:  75300,715
  2545. Fax:  (408)974-7084
  2546.     
  2547. WANT TO SUBSCRIBE? CHANGE OF ADDRESS? SUBSCRIPTION QUERIES?
  2548. For all your subscription-related needs, see the subscription card, or AppleLink DEV.SUBS.
  2549. WANT TO WRITE FOR develop?
  2550. If you'd like to contribute an article or column to develop, please see the previous page.
  2551. BACK ISSUES OF develop are on the Developer CD Series disc. To get printed back issues, send $13 per issue in the U.S. (or $20 outside the U.S.) to:  develop, Apple Computer, Inc., P.O. Box 531, Mount Morris, IL  61054-7858, U.S.A.
  2552. Issue 1  Realistic Color for Real-World Applications; The Palette Manager; Offscreen Worlds; Perils of PostScript; Compatibility Rules; Debugging Declaration ROMs; Apple II Development Dynamo
  2553. Issue 2  Using C++ Objects; Using Objects Safely in Object Pascal; The Memory Manager; MacApp; How to Design an Object-Based Application; Unofficial C++ Style Guide; Demystifying the GS/OS Cache
  2554. Issue 3  ISO 9660 and High Sierra; Creating a Mixed-Partition CD; Accessing CD Audio Tracks; The Comm Toolbox; Macintosh Display Card 8•24 GC; PrGeneral, the Trap That Makes the Most of Printing
  2555. Issue 4  Writing a Device Driver in C++; Polymorphic Code Resources in C++; The Macintosh Coprocessor Platform and A/ROSE; Perils of PostScript — The Sequel; An Apple IIGS Printer Driver
  2556. Issue 5  (Volume 2, Issue 1)  Asynchronous Background Networking; Scanning From ProDOS; Palette Manager Animation; Macintosh Common Lisp
  2557. Issue 6  Threads on the Macintosh; QuickDraw's CopyBits Procedure: Better Than Ever in System 7.0;     MacTCP Cookbook: Constructing Network-Aware Applications
  2558. Issue 7  QuickTime 1.0; Scoring Points With TrueType; Threaded Communications With Futures; Using C++ Objects in a World of Exceptions; The Subspace Manager
  2559. Issue 8  Curves in QuickDraw; Validating Date and Time Entry in MacApp; Macintosh Debugging; Macintosh Hybrid Applications for A/UX
  2560. Issue 9  Color on 1-Bit Devices; The TextBox You've Always Wanted; Making Your Macintosh Sound Like an Echo Box; Simple Text Windows via the Terminal Manager; Tracks: A New Tool for Debugging Drivers
  2561. Issue 10  Apple Event Objects and You; PostScript Enhancements for the LaserWriter Font Utility; Drawing in GWorlds for Speed and Versatility; In Search of the Optimal Palette
  2562. Issue 11  Asynchronous Sound Helper; Around and Around: Multibuffering Sounds; Living in an Exceptional World; The NetWork Project: Distributed Computing on the Macintosh    
  2563.  
  2564. Subscribe to printed develop 
  2565. Would you like to become one of our many subscribers who like to have a paper copy of develop at their fingertips? Subscribing is easy; just follow these simple instructions: 
  2566. •    If you’d like us to bill you, fill out the form in this file and send it via AppleLink to DEV.SUBS, or print and fill it out, check “Please bill me,” and send it by mail to the address below.
  2567. •    If you’ll be paying by credit card, fill out the form and send it via AppleLink to DEV.SUBS, or print and fill it out and mail it to the address below.
  2568. •    If you’ll be paying by check, money order, or international money order, print the order form, fill it out, and mail with payment to the address below.
  2569. Don’t send cash. And please use a separate form for each subscriber.
  2570. Subscribe & Save 25%
  2571. Yes! Send me a year (4 issues) of develop and the Developer CD Series disc for only $30 in the U.S. That’s 25% off the cover price. All other countries $50. 
  2572. Name:
  2573. Company/Institution:
  2574. Title:
  2575. Street or Post Office Address:
  2576. City:
  2577. State/Province and Zip Code:
  2578. Country:
  2579. Telephone:
  2580. ____ Please bill me.        ____ Payment enclosed.
  2581. ____ VISA    ____ MasterCard
  2582. Credit card account number:
  2583. Credit card expiration date:
  2584. ______________________________________
  2585. Signature/Date (only if sending by postal mail)
  2586. Phone orders call        1-800-877-5548 in the U.S.
  2587.                 (815)734-6309 all other countries
  2588. Fax orders to        (815)734-4205
  2589. AppleLink orders to    DEV.SUBS
  2590. Allow 6–8 weeks for delivery. U.S. subscription price is $30 for 4 issues of develop and the Developer CD Series disc. All other countries $50. For Canadian orders, price includes 7% GST (R100236199). Please make check payable to Apple Computer, Inc., in exact amount in U.S. dollars, and mail to:
  2591.         develop
  2592.         Apple Computer, Inc.
  2593.         P.O. Box 531
  2594.         Mt. Morris, IL  61054-7858
  2595.         USA
  2596. B1292D
  2597. RESOURCES
  2598. Apple provides a wealth of information, products, and services to assist developers. APDA, Apple's source for developer tools, and Apple Developer University are open to anyone who wants access to development tools and instruction. Qualified developers of commercial products in the U.S. and Canada may access additional information and services through the Apple Associates and Partners programs.
  2599.     The Associates Program, Apple’s mainstream program for developers of commercial products, is a convenient and cost-effective way to get essential technical and marketing information. This program offers self-help technical support, keeps you up to date with the latest products and technical documentation, and gives you access to the Apple developer community through AppleLink. Associates also receive discounts on equipment. The Associates program is designed for developers of commercial Apple-compatible products.
  2600. The Partners Program is open to Apple-selected developers of commercial products. In addition to receiving the same development information and tools as Associates, Partners receive technical support via electronic mail. Membership in the Partners program is limited to developers who directly contribute to Apple’s long-term product strategies and business objectives. 
  2601. APDA offers convenient worldwide access to development tools, resources, training products, and information for anyone interested in developing     applications on Apple platforms. Customers receive the quarterly APDA Tools Catalog featuring over 300 Apple and third-party development products. There are no membership fees. APDA offers convenient payment and shipping options, including site licensing. Apple Associates or Partners automatically receive the APDA Tools Catalog.
  2602. Apple Developer University provides training for all levels of Macintosh programmers. Developer University classes give you experience using the most up-to-date development tools. Developer University offers classes at U.S. and international locations and through authorized third parties. On-site instruction can also be arranged for selected courses. Multimedia self-paced courses are available from Developer University through APDA. These courses include Macintosh Programming Fundamentals, User-Centered Design, Introduction to Object-Oriented Programming, and AppleTalk for Programmers.    
  2603.  
  2604. ¨h◊#ˇ ˇˇˇˇ#◊ 
  2605. d,     Helvetica
  2606. <.°dONLNd;Ÿw˛+˜àd°dONLNd; w-)3e°dONLNd;;w\)/v°dONLNd;jwã)/e°dONLNd;ôw™)/l°dONLNd;∏w›)o°dONLNd;Îw)3p
  2607. °dONLNdw›ÜÊ(°˚T°dONLNd    wÎÜÛ)h°dONLNd
  2608. w¯Ü)
  2609. e°dONLNd wÜ)
  2610.  °dONLNd w
  2611. Ü)A°dONLNd
  2612. wÜ#)p°dONLNdw(Ü0)
  2613. p°dONLNdw5Ü8)
  2614. l°dONLNdw=ÜE)e°dONLNdwJÜM)
  2615.  °dONLNdwRÜ[)T°dONLNdw`Üh)e°dONLNdwmÜt)
  2616. c°dONLNdwyÜÅ) h°dONLNdwÜÜé)
  2617. n°dONLNdwìÜñ)
  2618. i°dONLNdwõÜ¢)c°dONLNdwßÜØ) a°dONLNdw¥Ü∑)
  2619. l°dONLNdwºÜø) °dONLNdwƒÜ )J°dONLNdwœÜ◊) o°dONLNdw‹Ü‰)
  2620. u°dONLNdwÈÜÓ)
  2621. r°dONLNd wÛÜ˚)
  2622. n°dONLNd!wÜ)
  2623. a°dONLNd"w
  2624. Ü)
  2625. l
  2626. 6mPòÅmHHfi…l)X◊ˇˇˇˇˇˇÃÃˇˇˇˇôôˇˇˇˇffˇˇˇˇ33ˇˇˇˇˇˇˇˇˇˇÃÃˇˇÃÃÃÃˇˇôôÃÃˇˇ    ffÃÃˇˇ
  2627. 33ÃÃˇˇ ÃÃˇˇ ˇˇôôˇˇ
  2628. ÃÃôôˇˇôôôôˇˇffôôˇˇ33ôôˇˇôôˇˇˇˇffˇˇÃÃffˇˇôôffˇˇffffˇˇ33ffˇˇffˇˇˇˇ33ˇˇÃÃ33ˇˇôô33ˇˇff33ˇˇ3333ˇˇ33ˇˇˇˇˇˇÃÃˇˇ ôôˇˇ!ffˇˇ"33ˇˇ#ˇˇ$ˇˇˇˇÃÃ%ÃÃˇˇÃÃ&ôôˇˇÃÃ'ffˇˇÃÃ(33ˇˇÃÃ)ˇˇÃÃ*ˇˇÃÃÃÃ+ÃÃÃÃÃÃ,ôôÃÃÃÃ-ffÃÃÃÃ.33ÃÃÃÃ/ÃÃÃÃ0ˇˇôôÃÃ1ÃÃôôÃÃ2ôôôôÃÃ3ffôôÃÃ433ôôÃÃ5ôôÃÃ6ˇˇffÃÃ7ÃÃffÃÃ8ôôffÃÃ9ffffÃÃ:33ffÃÃ;ffÃÃ<ˇˇ33ÃÃ=ÃÃ33ÃÃ>ôô33ÃÃ?ff33ÃÃ@3333ÃÃA33ÃÃBˇˇÃÃCÃÃÃÃDôôÃÃEffÃÃF33ÃÃGÃÃHˇˇˇˇôôIÃÃˇˇôôJôôˇˇôôKffˇˇôôL33ˇˇôôMˇˇôôNˇˇÃÃôôOÃÃÃÃôôPôôÃÃôôQffÃÃôôR33ÃÃôôSÃÃôôTˇˇôôôôUÃÃôôôôVôôôôôôWffôôôôX33ôôôôYôôôôZˇˇffôô[ÃÃffôô\ôôffôô]ffffôô^33ffôô_ffôô`ˇˇ33ôôaÃÃ33ôôbôô33ôôcff33ôôd3333ôôe33ôôfˇˇôôgÃÃôôhôôôôiffôôj33ôôkôôlˇˇˇˇffmÃÃˇˇffnôôˇˇffoffˇˇffp33ˇˇffqˇˇffrˇˇÃÃffsÃÃÃÃfftôôÃÃffuffÃÃffv33ÃÃffwÃÃffxˇˇôôffyÃÃôôffzôôôôff{ffôôff|33ôôff}ôôff~ˇˇffffÃÃffffÄôôffffÅffffffÇ33ffffÉffffÑˇˇ33ffÖÃÃ33ffÜôô33ffáff33ffà3333ffâ33ff䡡ffãÃÃffåôôffçffffé33ffèffêˇˇˇˇ33ëÃÃˇˇ33íôôˇˇ33ìffˇˇ33î33ˇˇ33ïˇˇ33ñˇˇÃÃ33óÃÃÃÃ33òôôÃÃ33ôffÃÃ33ö33ÃÃ33õÃÃ33úˇˇôô33ùÃÃôô33ûôôôô33üffôô33†33ôô33°ôô33¢ˇˇff33£ÃÃff33§ôôff33•ffff33¶33ff33ßff33®ˇˇ3333©ÃÃ3333™ôô3333´ff3333¨333333≠3333Æˇˇ33ØÃÃ33∞ôô33±ff33≤3333≥33¥ˇˇˇˇµÃÃˇˇ∂ôôˇˇ∑ffˇˇ∏33ˇˇπˇˇ∫ˇˇÃêÃÃÃúôôÃÃΩffÃÃæ33ÃÃøÃÿˇˇôô¡ÃÃôô¬ôôôô√ffôôƒ33ôô≈ôôΔˇˇff«ÃÃff»ôôff…ffff 33ffÀffÃˇˇ33ÕÃÃ33Œôô33œff33–3333—33“ˇˇ”ÃÑôô’ff÷33◊m6mP≥≠≥â≥â≥â≥≠≥â≥â≥â≥≠≥â≥â≥â≥≠≥â≥â≥â≥≠≥â≥â≥â≥≠≥â≥â≥â≥≠≥â≥â≥â≥≠≥â≥â≥â≥≠≥â≥â≥â≥≠≥â≥â≥â≥≠≥â≥â≥â≥≠≥â≥â≥â≥≠≥â≥â≥â≥≠≥â≥â≥â≥≠≥â≥â≥â≥≠≥â≥â≥â≥≠≥â≥â≥â≥≠≥â≥â≥â≥≠≥â≥â≥â≥≠≥â≥â≥â≥≠≥â≥â≥â≥≠≥â≥â≥â≥≠≥â≥â≥â≥≠≥â≥â≥â≥≠≥â≥â≥â≥≠≥â≥â≥â≥≠≥â≥â≥â≥≠≥â≥â≥â≥≠≥â≥â≥â≥≠≥â≥â≥â≥≠≥â≥â≥â≥≠≥â≥â≥â≥≠≥â≥â≥â≥≠≥â≥â≥â≥≠≥â≥â≥â≥≠â≥â≠â≥â≠â≥â≠â≥â≠â≥â≠â≥â≠â≥â≠â≥â≠â≥â≠â≥â≠â≥â≠â≥â≠â≥â≠â≥â≠â≥â≠â≥â≠â≥â≠â≥â≠â≥â≠â≥â≠â≥â≠â≥â≠â≥â≠â≥â≠â≥â≠â≥â≠â≥â≠â≥â≠â≥â≠â≥â≠â≥â≠â≥â≠â≥â≠â≥â≠â≥â≠â≥â≠â≥â≠â≥â≠â≥â≠â≥â≠â≥â≠â≥â≠â≥â≠â≥â≠â≥â≠â≥â≠â≥â≠â≥â≠â≥â≠â≥â≠â≥â≠â≥â≠â≥â≠â≥â≠â≥â≠â≥â≠â≥â≠â≥â≠â≥â≠â≥â≠â≥â≠â≥â≠â≥â≠â≥â≠â≥â≠â≥â≠â≥â≠â≥â≠â≥â≠â≥â≠â≥≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥âà≠â≠àââ≠à≠â≠àââ≠à≠â≠àââ≠à≠â≠àââ≠à≠â≠àââ≠à≠â≠àââ≠à≠â≠àââ≠à≠â≠àââ≠à≠â≠àââ≠à≠â≠àââ≠à≠â≠àââ≠à≠â≠àââ≠à≠â≠àââ≠à≠â≠àââ≠à≠â≠àââ≠à≠â≠àââ≠à≠â≠àââ≠à≠â≠àââ≠à≠â≠àââ≠à≠â≠àââ≠à≠â≠àââ≠à≠â≠àââ≠à≠â≠àââ≠à≠â≠àââ≠à≠â≠àââ≠à≠â≠àââ≠à≠â≠àââ≠à≠â≠àââ≠à≠â≠àââ≠à≠â≠àââ≠à≠â≠àââ≠à≠â≠àââ≠à≠â≠àââ≠à≠â≠àââ≠à≠â≠àââ≠à≠≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥ââ≠à≠â≠à≠â≠à≠â≠à≠â≠à≠â≠à≠â≠à≠â≠à≠â≠à≠â≠à≠â≠à≠â≠à≠â≠à≠â≠à≠â≠à≠â≠à≠â≠à≠â≠à≠â≠à≠â≠à≠â≠à≠â≠à≠â≠à≠â≠à≠â≠à≠â≠à≠â≠à≠â≠à≠â≠à≠â≠à≠â≠à≠â≠à≠â≠à≠â≠à≠â≠à≠â≠à≠â≠à≠â≠à≠â≠à≠â≠à≠â≠à≠â≠à≠â≠à≠â≠à≠â≠à≠â≠à≠â≠à≠â≠à≠â≠à≠â≠à≠â≠à≠â≠à≠â≠à≠â≠à≠â≠à≠â≠à≠â≠à≠â≠à≠â≠à≠â≠à≠â≠à≠â≠à≠â≠à≠â≠à≠â≠à≠â≠à≠â≠à≠â≠à≠â≠à≠â≠à≠â≠≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥âàâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâ≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥âà≠à≠à≠àâà≠à≠à≠àâà≠à≠à≠àâà≠à≠à≠àâà≠à≠à≠àâà≠à≠à≠àâà≠à≠à≠àâà≠à≠à≠àâà≠à≠à≠àâà≠à≠à≠àâà≠à≠à≠àâà≠à≠à≠àâà≠à≠à≠àâà≠à≠à≠àâà≠à≠à≠àâà≠à≠à≠àâà≠à≠à≠àâà≠à≠à≠àâà≠à≠à≠àâà≠à≠à≠àâà≠à≠à≠àâà≠à≠à≠àâà≠à≠à≠àâà≠à≠à≠àâà≠à≠à≠àâà≠à≠à≠àâà≠à≠à≠àâà≠à≠à≠àâà≠à≠à≠àâà≠à≠à≠àâà≠à≠à≠àâà≠à≠à≠àâà≠à≠à≠àâà≠à≠à≠àâà≠à≠à≠àâà≠≠â≥â≠â≥â≠â≥â≠â≥â≠â≥â≠â≥â≠â≥â≠â≥â≠â≥â≠â≥â≠â≥â≠â≥â≠â≥â≠â≥â≠â≥â≠â≥â≠â≥â≠â≥â≠â≥â≠â≥â≠â≥â≠â≥â≠â≥â≠â≥â≠â≥â≠â≥â≠â≥â≠â≥â≠â≥â≠â≥â≠â≥â≠â≥â≠â≥â≠â≥â≠â≥â≠â≥â≠â≥â≠â≥â≠â≥â≠â≥â≠â≥â≠â≥â≠â≥â≠â≥â≠â≥â≠â≥â≠â≥â≠â≥â≠â≥â≠â≥â≠â≥â≠â≥â≠â≥â≠â≥â≠â≥â≠â≥â≠â≥â≠â≥â≠â≥â≠â≥â≠â≥â≠â≥â≠â≥â≠â≥â≠â≥â≠â≥â≠â≥â≠â≥â≠â≥â≠â≥â≠âàâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâ≥â≠à≥â≠â≥â≠à≥â≠â≥â≠à≥â≠â≥â≠à≥â≠â≥â≠à≥â≠â≥â≠à≥â≠â≥â≠à≥â≠â≥â≠à≥â≠â≥â≠à≥â≠â≥â≠à≥â≠â≥â≠à≥â≠â≥â≠à≥â≠â≥â≠à≥â≠â≥â≠à≥â≠â≥â≠à≥â≠â≥â≠à≥â≠â≥â≠à≥â≠â≥â≠à≥â≠â≥â≠à≥â≠â≥â≠à≥â≠â≥â≠à≥â≠â≥â≠à≥â≠â≥â≠à≥â≠â≥â≠à≥â≠â≥â≠à≥â≠â≥â≠à≥â≠â≥â≠à≥â≠â≥â≠à≥â≠â≥â≠à≥â≠â≥â≠à≥â≠â≥â≠à≥â≠â≥â≠à≥â≠â≥â≠à≥â≠â≥â≠à≥â≠â≥â≠à≥â≠â≥âà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠≠à≠â≠à≥â≠à≠â≠à≥â≠à≠â≠à≥â≠à≠â≠à≥â≠à≠â≠à≥â≠à≠â≠à≥â≠à≠â≠à≥â≠à≠â≠à≥â≠à≠â≠à≥â≠à≠â≠à≥â≠à≠â≠à≥â≠à≠â≠à≥â≠à≠â≠à≥â≠à≠â≠à≥â≠à≠â≠à≥â≠à≠â≠à≥â≠à≠â≠à≥â≠à≠â≠à≥â≠à≠â≠à≥â≠à≠â≠à≥â≠à≠â≠à≥â≠à≠â≠à≥â≠à≠â≠à≥â≠à≠â≠à≥â≠à≠â≠à≥â≠à≠â≠à≥â≠à≠â≠à≥â≠à≠â≠à≥â≠à≠â≠à≥â≠à≠â≠à≥â≠à≠â≠à≥â≠à≠â≠à≥â≠à≠â≠à≥â≠à≠â≠à≥â≠à≠â≠à≥â≠ààâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâ≥â≠à≥â≠à≥â≠à≥â≠à≥â≠à≥â≠à≥â≠à≥â≠à≥â≠à≥â≠à≥â≠à≥â≠à≥â≠à≥â≠à≥â≠à≥â≠à≥â≠à≥â≠à≥â≠à≥â≠à≥â≠à≥â≠à≥â≠à≥â≠à≥â≠à≥â≠à≥â≠à≥â≠à≥â≠à≥â≠à≥â≠à≥â≠à≥â≠à≥â≠à≥â≠à≥â≠à≥â≠à≥â≠à≥â≠à≥â≠à≥â≠à≥â≠à≥â≠à≥â≠à≥â≠à≥â≠à≥â≠à≥â≠à≥â≠à≥â≠à≥â≠à≥â≠à≥â≠à≥â≠à≥â≠à≥â≠à≥â≠à≥â≠à≥â≠à≥â≠à≥â≠à≥â≠à≥â≠à≥â≠à≥â≠à≥â≠à≥â≠à≥â≠à≥â≠à≥â≠à≥âà≠àâàâàâà≠àâàâàâà≠àâàâàâà≠àâàâàâà≠àâàâàâà≠àâàâàâà≠àâàâàâà≠àâàâàâà≠àâàâàâà≠àâàâàâà≠àâàâàâà≠àâàâàâà≠àâàâàâà≠àâàâàâà≠àâàâàâà≠àâàâàâà≠àâàâàâà≠àâàâàâà≠àâàâàâà≠àâàâàâà≠àâàâàâà≠àâàâàâà≠àâàâàâà≠àâàâàâà≠àâàâàâà≠àâàâàâà≠àâàâàâà≠àâàâàâà≠àâàâàâà≠àâàâàâà≠àâàâàâà≠àâàâàâà≠àâàâàâà≠àâàâàâà≠àâàâàâà≠≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠ààâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâ≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠ààâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàââà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâàÇààâÇààâÇààâÇààâÇààâÇààâÇààâÇààâÇààâÇààâÇààâÇààâÇààâÇààâÇààâÇààâÇààâÇààâÇààâÇààâÇààâÇààâÇààâÇààâÇààâÇààâÇààâÇààâÇààâÇààâÇààâÇààâdÇààâÇààâÇààâÇààâÇààâÇààâÇààâÇààâÇààâÇààâÇààâÇààâÇààâÇààâÇààâÇààâÇààâÇààâÇààâÇààâÇààâÇààâÇààâÇààâÇààâDzà1ÇààâÇààâÇààâÇààâÇààâÇààâÇààâÇààâÇààâÇààâÇààâÇààâÇà≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠¨≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠ààâ˛àâÇààâ˛àâÇààâ˛àâÇààâ˛àâÇààâ˛àâÇààâ˛àâÇààâ˛àâÇààâ˛àâÇààâ˛àâÇààâ˛àâÇààâ˛àâÇààâ˛àâÇààâ˛àâÇààâ˛àâÇààâ˛àâÇààâ˛àâÇààâ˛àâÇààâ˛àâÇààâ˛àâÇààâ˛àâÇààâ˛àâÇààâ˛àâÇààâ˛àâÇààâ˛àâÇààâ˛àâÇààâ˛àâÇààâ˛àâÇààâ˛àâ˝àÇàà¨Ç¨à≠˛àâÇààâ˛àâÇààâ˛àâÇààâ˛àâÇààâ˛àâÇààâ˛àâÇààââà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠ààÇâà≠à≠à¨à≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàÇàÇàÇàÇà]ÇÇàÇàǨǨà¨Ç˛àDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàÇà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠ààÇàÇàÇàÇàà≠à≠à≠¨≠à≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àààDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàÇàÇà^ÇÇà^Ç^à]àǨǨà¨à¨ààDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàààâàâà≠˛àâàâà≠˛àâàâà≠˛àâàâà≠˛àâàâà≠˛àâàâà≠˛àâàâà≠˛àâàâà≠˛àâàâà≠˛àâàâà≠˛àâàâà≠˛àâàâà≠˛àâàâà≠˛àâàâà≠˛àâàâà≠˛àâàâà≠˛àâàâà≠˛àâàâà≠˛àâàâà≠˛àâàâà≠˛àâàâà≠˛àâàâà≠˛àâàâà≠˛àâàâà≠˛àâàâà≠˛àâàâà≠˛àâ˛àâààÇàDzàÇÇ^àÇàà≠à¨à≠¨≠à≠˛àâàâà≠˛àâàâà≠˛àâàâà≠˛àâàâà≠˛àâàâà≠˛àÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇà^ÇÇà^Ç^Ç]àÇà]Ç^àÇàà¨Çàà¨ààÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâàL≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠˛à≠ààÇàÇàÇàÇàÇàÇàÇàÇàÇàà≠à≠à≠¨≠˛à)≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇà]ÇÇà^àÇà^à^Ç]Ç^à^Ç^àà¨à¨à¨à¨ÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàààâ˛àâ˛àâ˛àâ˛àâ˛àâ˛àâ˛àâ˛àâ˛àâ˛àâ˛àâ˛àâ˛àâ˛àâ˛àâ˛àâ˛àâ˛àâ˛àâ˛àâ˛àâ˛àâ˛àâ˛àâ˛àâ˛àâ˛àâ˛àâ˛àâ˛àâ˛àâ˛àâ˛àâ˛àâ˛àâ˛àâ˛àâ˛àâ˛àâ˛àâ˛àâ˛àâ˛àâ˛àâ˛àâ˛àâ˛àâ˛àâ˛àâ˛àâààDzàÇàÇàÇàÇàÇàÇà^àÇàÇàÇàÇ≠à≠à≠¨≠à≠˛àâ˛àâ˛àâ˛àâ˛àâ˛àâ˛àâ˛àâ˛àâ˛àâ˛àÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇà]Ç^àÇà^Ç]Ç^à^àÇà]ÇÇà^à^àÇàǨÇàà≠à¨ààÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇà§˝àâ˙àâ˙àâ˙àâ˙àâ˙àâ˙àâ˙àâ˙àâ˙àâ˙àâ˙àâ˙àâ˙àâ˙àâ˙àâ˙àâ˙àâ˙àâ˙àâ˙àâ˙àâ˙àâ˙àâ˙àâààÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàDzà
  2629. ÇàÇ≠à¨à≠à≠à≥¨≠¸àâ˙àâ˙àâ˙àâ˙àâ¸àÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇÇ^Ç]à^Ç^àÇà]àÇà]ÇÇà]Ç^àÇà^à^àÇàǨà¨Ç¨à¨ààÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇààDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàÇàÇà^àÇàDzà ÇàÇàÇà^ÇÇàÇàÇàÇÇ^àÇàÇ≠à¨à≠à≠¨≥ààDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàÇ^àÇàÇàÇà^àÇàÇàÇà^àÇàÇàÇà^àÇàÇàÇà^àÇàÇàÇà^àÇàÇàÇà^àÇàÇàÇà^àÇàÇàÇà^àÇàÇàÇà^àÇàÇàÇà^àÇàÇàÇà^àÇàÇàÇà^àÇàÇàÇà^àÇàÇàÇà^àÇàÇàÇà^àÇàÇàÇàl^àÇàÇàÇà^àÇàÇàÇà^àÇàÇàÇà^àÇàÇàÇà^àÇàÇàÇà^àÇàÇàÇà^àÇàÇàÇà^àÇàÇàÇà]àÇà^à^à]Ç]à]ÇÇàÇà^à^Ç]Ç]ÇÇàÇàÇà]Ç^Ç]àà¨ÇàÇ¨à˛¨)ÇàÇàÇàÇà^àÇàÇàÇà^àÇàÇàÇà^àÇàÇàÇà^àÇàÇàÇà^à˛àDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàÇàÇàDzàÇàÇàÇà^àÇâÇàÇàÇÇ^˛àDzàÇàÇà^àà≠à≠à¨à≠¨≠¨≠ààDzàDzàDzàDzàDzàDzàDzàDzàDzàÇààÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàRÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇà^ÇÇà^àÇà^Ç^à]Ç]Ç]ÇÇà]˛ÇC]ÇÇà^Ç^àÇàÇà]Ç^àÇàà¨Ç¨à≠à¨ààÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇààDzàÇàÇàDzàÇàÇàDzàÇàÇàDzàÇàÇàDzàÇàÇàDzàÇàÇàDzàÇàÇàDzàÇàÇàDzàÇàÇàDzàÇàÇàDzàÇàÇàDzàÇàÇàDzàÇàÇàDzàÇàÇàDzàÇàÇàDzàÇàÇàDzàÇàÇàDzàÇàÇàDzàÇàÇàDzàÇàÇàDzàÇàÇàDzàÇàÇàDzàÇàÇàDzà<ÇàÇàÇàÇàÇàÇà^àÇÇ^àÇàÇàÇà^Ç^àÇàÇàÇàÇàÇàÇàǨà¨à≠à≠¨≠¨≠ààÇàÇàÇàDzàÇàÇàDzàÇàÇàDzàÇàÇàDzàÇàÇàÇ]àÇà]àÇà]àÇà]àÇà]àÇà]àÇà]àÇà]àÇà]àÇà]àÇà]àÇà]àÇà]àÇà]àÇà]àÇà]àÇà]àÇà]àÇà]àÇà]àÇà]àÇà]àÇà]àÇà]àÇà]àÇà]àÇà]àÇà]àÇà]àÇà]àÇà]àÇà]àÇà]àÇà]àÇà]àÇà]àÇà]àÇà]àÇà]àÇà]àÇà]àÇà]àÇà]àÇà]àÇà]àÇà]àÇà]Ç^à]Ç]Ç]Ç^à]Ç]Ç]Ç^Ç]Ç^Ç]Ç^à]Ç]Ç]àÇà]Ç^à]Ç^à^àÇàÇàǨǨà¨ààÇà]àÇà]àÇà]àÇà]àÇà]àÇà]àÇà]àÇà]àÇà]àÇà]à˛àDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàÇàÇÇ^àÇàÇàÇàÇàÇàÇàÇàDzàÇàÇàÇàÇàǸàÇàÇàÇàÇâà¨à≠à¨à≠¨≠¨≠ààDzàDzàDzàDzàDzàDzàDzàDzàDzàÇààÇà]àÇà]àÇà]àÇà]àÇà]àÇà]àÇà]àÇà]àÇà]àÇà]àÇà]àÇà]àÇà]àÇà]àÇà]àÇà]àÇà]àÇà]àÇà]àÇà]àÇà]àÇà]àÇà]àÇà]àÇà]àÇà]àÇà]àÇà]àÇà]àÇà]àÇà]àÇà]ànÇà]àÇà]àÇà]àÇà]àÇà]àÇà]àÇà]àÇà]àÇà]àÇà]àÇà]àÇà]àÇà]Ç^à^àÇà]Ç^à^ÇÇà]àÇà^à^Ç]ÇÇà^Ç]Ç]Ç^à^Ç^àÇàÇà]Ç^à]ÇÇàǨà¨Ç¨à¨à˛¨'ÇàÇà]àÇà]àÇà]àÇà]àÇà]àÇà]àÇà]àÇà]àÇà]àÇààÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇYàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇà^àÇàÇàÇàÇàÇàÇà^àÇàÇàÇÇ^àÇàÇà^ÇDzà<^àÇà^àÇàÇ≠à¨à≠à≠à≠¨≠¨≠ààÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇ]àÅà]àÅà]àÅà]àÅà]àÅà]àÅà]àÅà]àÅà]àÅà]àÅà]àÅà]àÅà]àÅà]àÅà]àÅà]àÅà]àÅà]àÅà]àÅà]àÅà]àÅà]àÅà]àÅà]àÅà]àÅà]àÅà]àÅà]àÅà]àÅà]àÅà]àÅà]àÅà]àÅà]àÅà]àÅà]àÅà]àÅà]àÅà]àÅà]àÅà]àÅà]àÅà]àÅà]à]à]Ç]Ç^à^à]Ç^Ç]Ç^Ç]ÇÇà]Ç^à]Ç^Ç]àÇà]Ç^Ç]Ç^Ç]Ç^à]Ç^à]Ç^à^àÇàÇàà¨à¨à¨à¨àà]àÅà]àÅà]àÅà]àÅà]àÅà]àÅà]àÅà]àÅà]àÅà]à˛àÇàÇàDzàÇàÇàDzàÇàÇàDzàÇàÇàDzàÇàÇàDzàÇàÇàDzàÇàÇàDzàÇàÇàDzàÇàÇàDzàÇàÇàDzàÇàÇàDzàÇàÇàDzàÇàÇàDzàÇàÇàDzàÇàÇàDzàÇàÇàDzàÇàÇàDzàÇàÇàDzàÇàÇàDzàÇàÇàDzàÇàÇàDzàÇàÇàDzàÇàÇàÇàÇàÇàÇà^àDzàÇàDzà^àDzàÇàDzà ÇàÇàÇà^àÇàÇàÇàÇàà≠à≠à≠¨≠¨≥¨≠ààÇàDzàÇàÇàDzàÇàÇàDzàÇàÇàDzàÇàÇàÇààÇà]àÅà]àÇà]àÅà]àÇà]àÅà]àÇà]àÅà]àÇà]àÅà]àÇà]àÅà]àÇà]àÅà]àÇà]àÅà]àÇà]àÅà]àÇà]àÅà]àÇà]àÅà]àÇà]àÅà]àÇà]àÅà]àÇà]àÅà]àÇà]àÅà]àÇà]àÅà]àÇà]àÅà]àÇà]àÅà]àÇà]àÅà]àÇà]àÅà]àÇà]àÅà]àÇàÅàÇà]ÇÇà^ÇÇà]ÇÇà]ÇÇà]Ç]Ç^àÇàÇàÇà^Ç]àÇàÇà]àÇàÇàÇàÇà^Ç]àÇàÇàÇà^àà¨Çàà¨à¨¨≠à¨Çà]àÇà]àÅà]àÇà]àÅà]àÇà]àÅà]àÇà]àÅà]àÇààÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇGàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇà^Ç^àÇàÇàÇàÇàÇàÇà^àÇàÇàÇàDzà˛Ç˛àÇàÇàÇàÇàÇàÇàÇàÇàDzà4^àà¨à≠à¨à≠¨≠¨≥¨¨ÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇ]à]à]Ç]à]à]à]Ç]à]à]à]Ç]à]à]à]Ç]à]à]à]Ç]à]à]à]Ç]à]à]à]Ç]à]à]à]Ç]à]à]à]Ç]à]à]à]Ç]à]à]à]Ç]à]à]à]Ç]à]à]à]Ç]à]à]à]Ç]à]à]à]Ç]à]à]à]Ç]àp]à]à]Ç]à]à]à]Ç]à]à]à]Ç]à]à]à]Ç]à]à]à]Ç]à]Ç^à]à^Ç]Ç^à]ÇÇàÇà^à]Ç]Ç^àÇà^Ç]àÇàÇÇ]àÇà^àÇà^Ç]Ç]Ç^Ç]à^à^àÇà^Ç^àÇàǨǨà¨à˛¨%Çà]à]à]à]Ç]à]à]à]Ç]à]à]à]Ç]à]à]à]Ç]à]ààÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇ+àÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàDzàÇàÇàÇàÇàà≠ààÇàÇàǸàÇàÇâààDzàJÇàÇàÇàÇàÇàÇà^àÇàÇàÇàÇàÇàà≠à¨à≠¨≠¨≠¨≠¨≠ààÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇ]à]àÅà]à]à]àÅà]à]à]àÅà]à]à]àÅà]à]à]àÅà]à]à]àÅà]à]à]àÅà]à]à]àÅà]à]à]àÅà]à]à]àÅà]à]à]àÅà]à]à]àÅà]à]à]àÅà]à]à]àÅà]à]à]àÅà]à]à]àÅà]à6]à]àÅà]à]à]àÅà]à]à]àÅà]à]à]àÅà]Ç]à]Ç^à^Ç^Ç]àÇàÇàÇà^Ç^Ç^˛à_^Ç^Ç]ÇÇàÇàÇà^àÇà^Ç^àÇà^à]àÇà]àÇÇ]Ç]Ç^àÇà]Ç^Ç]àà¨Ç¨à¨à¨à¨à¨ààÅà]à]àÅà]à]à]àÅà]à]à]àÅà]à]à]àÅà]à]ààÅàÇàÅàÇàÅàÇàÅàÇàÅàÇàÅàÇàÅàÇàÅàÇàÅàÇàÅàÇàÅàÇàÅàÇàÅàÇàÅàÇàÅàÇàÅàÇàÅàÇàÅàÇàÅàÇàÅàÇàÅàÇàÅàÇàÅàÇàÅàÇàÅàÇàÅàÇàÅàÇàÅàÇàÅàÇàÅàÇàÅàÇàÅàÇ5àÅàÇàÅàÇàÅàÇàÅàÇàÅàÇàÅàÇàÅàÇàÅàÇÇ^à^Ç^àÇà^àÇàÇàÇàÇàÇàDzà^àÇà^àÇàÇàÇàÇàÇÇ^àÇà^˛àH^àÇà^àÇà^àÇÇ^àÇàÇàÇàÇàà¨à≠à¨à≠¨≠¨≥¨≠à¨ÇàÅàÇàÅàÇàÅàÇàÅàÇàÅàÇàÅàÇàÅàÇàÅàÇàÅ]Ç]à]Ç]à]Ç]à]Ç]à]Ç]à]Ç]à]Ç]à]Ç]à]Ç]à]Ç]à]Ç]à]Ç]à]Ç]à]Ç]à]Ç]à]Ç]à]Ç]à]Ç]à]Ç]à]Ç]à]Ç]à]Ç]à]Ç]à]Ç]à]Ç]à]Ç]à]Ç]à]Ç]à]Ç]à]Ç]à]Ç]à]Ç]à]Ç]à]Ç]à]Ç]à]Ç]à]Ç]à]Ç]à]Ç]à]Ç]Ç]Ç]Ç]Ç]Ç]Ç^à]à^Ç]Ç]Ç^àÇà]Ç]Ç]Ç]Ç]Ç^à]Ç^Ç]Ç^à]Ç^à]Ç^à]Ç]Ç]Ç^à]Ç]Ç]Ç]à^àÇàÇàǨǨà¨à¨à¨à¨Çà]Ç]à]Ç]à]Ç]à]Ç]à]Ç]à]Ç]à]Ç]à]Ç]à]ÇàÇàÅàÇàÅàÇàÅàÇàÅàÇàÅàÇàÅàÇàÅàÇàÅàÇàÅàÇàÅàÇàÅàÇàÅàÇàÅàÇàÅàÇàÅàÇàÅàÇàÅàÇàÅàÇàÅàÇàÅàÇàÅàÇàÅàÇàÅàÇàÅàÇàÅàÇàÅàÇàÅàÇàÅàÇàÅàÇàÅàÇàÅàÇàÅOàÇàÅàÇàÅàÇàÅàÇàÅàÇàÅàÇàÅàÇàÇàÇàÇàÇà^àÇÇ^àÇàÇàÇàÇàÇàÇàÇàÇàÇà^Ç^Ç^àÇàÇàÇà^àÇàÇàÇà^˛àÇàÇÇ^àÇàÇàÇàÇà^ÇÇ˝à≠˛à-≠ਨ≥¨≠¨≥¨¨ÇàÇàÅàÇàÅàÇàÅàÇàÅàÇàÅàÇàÅàÇàÅàÇàÅàÇ]à]Ç]à]Ç]à]Ç]à]Ç]à]Ç]à]Ç]à]Ç]à]Ç]à]Ç]à]Ç]à]Ç]à]Ç]à]Ç]à]Ç]à]Ç]à]Ç]à]Ç]à]Ç]à]Ç]à]Ç]à]Ç]à]Ç]à]Ç]à]Ç]à]Ç]à]Ç]à]Ç]à]Ç]à]Ç]à]Ç]à]Ç]à]Ç]à]Ç]à]Ç]à]Ç]à]Ç]à]Ç]à]Ç]à]à^à]Ç^à]Ç]à]Ç^à^à^Ç]Ç^Ç]Ç^à]Ç^Ç]Ç]Ç]Ç^à^Ç^Ç]ÇÇà^àÇà]ÇÇà^Ç^Ç]Ç^àÇà^à^Ç^Ç^àÇàÇàÇàÅàÅàŨ¨≠ਨ≠ÇàÅà]Ç]à]Ç]à]Ç]à]Ç]à]Ç]à]Ç]à]Ç]à]Ç]ààÅàÅà]àÅàÅàÅà]àÅàÅàÅà]àÅàÅàÅà]àÅàÅàÅà]àÅàÅàÅà]àÅàÅàÅà]àÅàÅàÅà]àÅàÅàÅà]àÅàÅàÅà]àÅàÅàÅà]àÅàÅàÅà]àÅàÅàÅà]àÅàÅàÅà]àÅàÅàÅà]àÅàÅàÅà]àÅ=àÅàÅà]àÅàÅàÅà]àÅàÅàÅàÅàÇà^àÇàÇàÇÇ^à^àÇàÇà^àÇà^àÇàÇàÇà^àÇà^à^Ç^˛à^àÇà^˛àDzàLÇàÇà^àÇà^àÇàÇàÇàÇàÇà^âÇàÇàÇàÇàÅÇ]àà≠¨≠¨≠¨≠àà]àÅà]àÅàÅàÅà]àÅàÅàÅà]àÅàÅàÅà]àÅàÅ]Ç]Ç]Ç]Ç]Ç]Ç]Ç]Ç]Ç]Ç]Ç]Ç]Ç]Ç]Ç]Ç]Ç]Ç]Ç]Ç]Ç]Ç]Ç]Ç]Ç]Ç]Ç]Ç]Ç]Ç]Ç]Ç]Ç]Ç]Ç]Ç]Ç]Ç]Ç]Ç]Ç]Ç]Ç]Ç]Ç]Ç]Ç]Ç]Ç]Ç]Ç]Ç]Ç]Ç]Ç]Ç]Ç]Ç]Ç]Ç]Ç]Ç]Ç]ÇH]Ç]Ç]Ç]Ç]Ç]Ç]Ç]Ç]Ç]à]à^à]Ç^à]Ç^Ç]Ç^à]Ç]à^à^Ç]Ç^à]Ç^Ç]àÇà]Ç^à]àÇà^ÇÇà]ÇÇàDzàMÇàÇà]Ç^à]Ç^Ç]à^Ç^à^à^Ç^à^àÇàÇÇ]ÇW]]àà¨à¨à¨à¨ÅÇ]Ç]Ç]Ç]Ç]Ç]Ç]Ç]Ç]Ç]Ç]Ç]Ç]Ç]Ç]Ç]ÇàÅàÅàÅàÅàÅàÅàÅàÅàÅàÅàÅàÅàÅàÅàÅàÅàÅàÅàÅàÅàÅàÅàÅàÅàÅàÅàÅàÅàÅàÅàÅàÅàÅàÅàÅàÅàÅàÅàÅàÅàÅàÅàÅàÅàÅàÅàÅàÅàÅàÅàÅàÅàÅàÅàÅàÅàÅàÅàÅàÅàÅàÅàÅàÅàÅàÅàÅàÅàÅàÅàÅàÅàÇàDzà
  2630. ÇàÇàÇàÇàÇàDzàÇàÇàÇàÇàÇàÇàÇà^˛àÇàÇàǸàXÇàÇàÇàà≠à≠à≥à≠ÇàÇàÇàÇàÇàÇàÇâààÇâÇàÇ≠à≠à≠ààÅàÅÇÇ≥¨≠¨≥¨≠¨¨ÅàÅàÅàÅàÅàÅàÅàÅàÅàÅàÅàÅàÅàÅàÅàÅàÅ]Ç]Ç]Ç]Ç]Ç]Ç]Ç]Ç]Ç]Ç]Ç]Ç]Ç]Ç]Ç]Ç]Ç]Ç]Ç]Ç]Ç]Ç]Ç]Ç]Ç]Ç]Ç]Ç]Ç]Ç]Ç]Ç]Ç]Ç]Ç]Ç]Ç]Ç]Ç]Ç]Ç]Ç]Ç]Ç]Ç]Ç]Ç]Ç]Ç]Ç]Ç]Ç]Ç]Ç]Ç]Ç]Ç]Ç]Ç]Ç]Ç]Ç]Ç]ÇZ]Ç]Ç]Ç]Ç]Ç]Ç]Ç]Ç]à]ÇÇàÇà^à]Ç^à]àÇàÇàÇà^Ç^à^àÇà^Ç^à]Ç^à^Ç^à^àÇà^à^à^à^Ç]àà≠à≠¨≠à¨ÇàÇàÇà^àÇàDzà;^àÇàÇàà≠àâà≠ÇÇÅàÅàà¨à¨¨≠¨¨Çà]Ç]Ç]Ç]Ç]Ç]Ç]Ç]Ç]Ç]Ç]Ç]Ç]Ç]Ç]Ç]Çà]àÅà]àÅà]àÅà]àÅà]àÅà]àÅà]àÅà]àÅà]àÅà]àÅà]àÅà]àÅà]àÅà]àÅà]àÅà]àÅà]àÅà]àÅà]àÅà]àÅà]àÅà]àÅà]àÅà]àÅà]àÅà]àÅà]àÅà]àÅà]àÅà]àÅà]àÅà]àÅà]àÅà]àÅà]àÅà]à^àÇàÇàDzàÇà^à^àÇàÇàÇàÇàÇà^˛àlÇàÇÇ^à^àÇàÇàÇàÇà^àÇà^àÇà^àÇàà≠à≠à≥¨≠à≠¨≠à≠à≠à≥à≠à≠à≠à≠à≠à≠à≠¨≠à¨Å¨Ç¨à≠¨≠¨≥¨¨Åà]à]àÅà]àÅà]àÅà]àÅà]àÅà]àÅà]àÅà]]Å]Ç]Å]Ç]Å]Ç]Å]Ç]Å]Ç]Å]Ç]Å]Ç]Å]Ç]Å]Ç]Å]Ç]Å]Ç]Å]Ç]Å]Ç]Å]Ç]Å]Ç]Å]Ç]Å]Ç]Å]Ç]Å]Ç]Å]Ç]Å]Ç]Å]Ç]Å]Ç]Å]Ç]Å]Ç]Å]Ç]Å]Ç]Å]Ç]Å]Ç]Å]Ç]Å]Ç]Å]Çc]Å]Ç]Å]Ç]Å]Ç]Ç]Ç]ÇÇàÇàÇà^à^Ç]ÇÇà]à^à]Ç^à]Ç^à^à^Ç]Ç]Ç]Ç]Ç]Ç]Ç]^]Ç]Ç]Ç]ÇÇà]ÇÇàÇàǨǨ¨≠¨≠¨≥¨≠¨≥¨≥¨≥¨≠à≠˛à
  2631. ≠à≠¨≠ÇàÅàŨà¨à˛¨!Çà]Ç]Å]Ç]Å]Ç]Å]Ç]Å]Ç]Å]Ç]Å]Ç]Å]Ç]ÅàÅàÅàÅà]àÅàÅàÅà]àÅàÅàÅà]àÅàÅàÅà]àÅàÅàÅà]àÅàÅàÅà]àÅàÅàÅà]àÅàÅàÅà]àÅàÅàÅà]àÅàÅàÅà]àÅàÅàÅà]àÅàÅàÅà]àÅàÅàÅà]àÅàÅàÅà]àÅàÅàÅà]àÅàÅàÅà]àÅàÅàÅà]àÅà]à^à^àÇàDzàÇàÇà^àÇàÇàÇàÇà^àDzà ÇàÇàÇàÇÇ^àÇÇ^àÇàÇàÇàÇàÇà^àÇàÇàÇàDzàJÇ≠à≠à≠¨≥¨◊≥◊≠◊≠≥¨◊≠≥≠≥≠≠¨◊≥◊¨≠à¨Å¨¨≠¨≥¨≠¨≥¨à]àÅà]àÅàÅàÅà]àÅàÅàÅà]àÅàÅàÅà]àÅ]Ç]Ç]Ç]Å]Ç]Ç]Ç]Å]Ç]Ç]Ç]Å]Ç]Ç]Ç]Å]Ç]Ç]Ç]Å]Ç]Ç]Ç]Å]Ç]Ç]Ç]Å]Ç]Ç]Ç]Å]Ç]Ç]Ç]Å]Ç]Ç]Ç]Å]Ç]Ç]Ç]Å]Ç]Ç]Ç]Å]Ç]Ç]Ç]Å]Ç]Ç]Ç]Å]Ç]Ç]Ç]Å]Ç]Ç]Ç]Åm]Ç]Ç]Ç]Å]Ç]Ç]Ç]Ç^Ç]Ç^à]Ç^Ç]Ç^Ç]àÇà^Ç]Ç]àÇà^Ç^à^à^Ç]Ç^Ç]Ç^Ç]àÇàÇàÇàÇÇ^à^àÇà^Ç^à]Ç^à^àÇàǨ¨≥¨≥¨≠ਨ≠¨≥¨≥¨≥¨≥¨≥¨¨˛Å¨à˛¨à˛¨ÅÇ]Ç]Å]Ç]Ç]Ç]Å]Ç]Ç]Ç]Å]Ç]Ç]Ç]Å]ÇÇ]àÅÇ]àÅÇ]àÅÇ]àÅÇ]àÅÇ]àÅÇ]àÅÇ]àÅÇ]àÅÇ]àÅÇ]àÅÇ]àÅÇ]àÅÇ]àÅÇ]àÅÇ]àÅÇ]àÅÇ]àÅÇ]àÅÇ]àÅÇ]àÅÇ]àÅÇ]àÅÇ]àÅÇ]àÅÇ]àÅÇ]àÅÇ]àÅÇ]àÅÇ]àÅÇ]àÅÇ]àÅ'Ç]àÅÇ]àÅÇ]àÅÇ]à^Ç^àÇàÇà^à^àÇà^àÇàÇàÇà^àDzàÇà^˛à)]àÇàÇàÇàÇàà¨à≠à¨à≠ààǨÇÇ^àÇà^àÇàÇàÇà^à¨≥¨≠˛à;≠¨≠¨◊≠≥≠◊≠≥≠◊≠≥¨¨Å¨Å¨¨≠¨≠¨≠¨¨ÅÇ]àÅÇ]àÅÇ]àÅÇ]àÅÇ]àÅÇ]àÅÇ]àÅÇ]]Å]Ç]Å]Å]Å]Ç]Å]Å]Å]Ç]Å]Å]Å]Ç]Å]Å]Å]Ç]Å]Å]Å]Ç]Å]Å]Å]Ç]Å]Å]Å]Ç]Å]Å]Å]Ç]Å]Å]Å]Ç]Å]Å]Å]Ç]Å]Å]Å]Ç]Å]Å]Å]Ç]Å]Å]Å]Ç]Å]Å]Å]Ç]Å]Å]Å]Ç]Å]Å@]Å]Ç]Å]Å]Å]Ç]Ç]Ç]Ç^à]Ç]Ç]Ç^à^Ç^Ç]Ç^à]Ç]àÇà^à]Ç^à]Ç]à^àÇà]àǨà¨à¨à˛¨UÇàÇà]Ç^à]Ç]Ç]àÇà]ÇǨà¨Çà]ÇǨà≠¨≥¨≠¨≥¨≠¨≥¨¨ÅàÅàŨà¨à¨à¨Çà]Å]Å]Å]Ç]Å]Å]Å]Ç]Å]Å]Å]Ç]Å]Å]ÅàÅÇ]àÅà]àÅÇ]àÅà]àÅÇ]àÅà]àÅÇ]àÅà]àÅÇ]àÅà]àÅÇ]àÅà]àÅÇ]àÅà]àÅÇ]àÅà]àÅÇ]àÅà]àÅÇ]àÅà]àÅÇ]àÅà]àÅÇ]àÅà]àÅÇ]àÅà]àÅÇ]àÅà]àÅÇ]àÅà]àÅÇ]àÅà]'àÅÇ]àÅà]àÅÇ]àÇàÇàÇàÇàÇàÇàÇàÇàÇàÇà^àÇàÇàDzànÇàÇàÇàÇà^àÇàÇàà≠¨≥¨≠¨≥¨≥¨≥≠≠àà^Ç^àÇà^àÇàÇàÇàà≥àà^àÇàà≥¨≥≠◊≠≥≠◊≠≥≠◊¨¨Ç¨Å¨à≠¨≠¨≥¨¨Çà]à]àÅÇ]àÅà]àÅÇ]àÅà]àÅÇ]àÅà]àÅ]Ç]Å]Ç]Å]Ç]Å]Ç]Å]Ç]Å]Ç]Å]Ç]Å]Ç]Å]Ç]Å]Ç]Å]Ç]Å]Ç]Å]Ç]Å]Ç]Å]Ç]Å]Ç]Å]Ç]Å]Ç]Å]Ç]Å]Ç]Å]Ç]Å]Ç]Å]Ç]Å]Ç]Å]Ç]Å]Ç]Å]Ç]Å]Ç]Å]Ç]Å]Ç]Å]Ç]Å]Ç]ÅV]Ç]Å]Ç]Å]Å]Å]Ç^àÇà^àÇà^Ç^à^Ç^àÇà^Ç]ÇÇà]ÇÇà^Ç^à]Ç^à]Ç^àÇà^àà≥¨¨à≠¨≠à≠¨≥¨à^Ç]Ç^à]Ç^à]Ç^àDzà]Ç^àǨ¨≥¨≥¨≥¨≥¨≥¨≥¨≥à¨ÅáŨà¨à˛¨àà]Å]Å]Ç]Å]Ç]Å]Ç]Å]Ç]Å]Ç]Å]Ç]Å]ÇÇ]à]Ç]à]Ç]à]Ç]à]Ç]à]Ç]à]Ç]à]Ç]à]Ç]à]Ç]à]Ç]à]Ç]à]Ç]à]Ç]à]Ç]à]Ç]à]Ç]à]Ç]à]Ç]à]Ç]à]Ç]à]Ç]à]Ç]à]Ç]à]Ç]à]Ç]à]Ç]à]Ç]à]Ç]à]Ç]à]Ç]à]Ç]à]Ç]à]Ç]à]Ç]à]à]àÇàÇàÇàÇà^Ç^à˛Ç˛à]Ç^àÇàÇàÇàÇÇ^à^àÇàÇàÇ˝à_≥≠≥à≥≠≥¨≥≠≥≠≥ààÇàÇàÇàÇàÇàÇà^àÇàÇàÇàà¨à≠¨≥≠≥≠◊≠≥¨≥≠≥¨≥¨¨Å¨à¨¨≠¨≠¨≥àà]à]Ç]à]Ç]à]Ç]à]Ç]à]Ç]à]Ç]à]Ç]]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Åo]Å]Å]Å]Å]Å]Å]Ç^à]Ç]Ç]à^Ç]Ç^Ç]Ç^Ç]Ç]Ç]à^Ç]àÇÇ]Ç^Ç]Ç^à]àÇà^¨¨≥à¨à≥ਨ≥¨≥¨¨^àÇà]Ç^à]Ç]Ç]Ç^à]Ç^à^àǨਨ≥¨≠¨≥¨≠¨≥¨≠¨¨˛ÅàŨà¨à˛¨ÅÅ]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]ÅàÅÇ]àÅÇ]àÅÇ]àÅÇ]àÅÇ]àÅÇ]àÅÇ]àÅÇ]àÅÇ]àÅÇ]àÅÇ]àÅÇ]àÅÇ]àÅÇ]àÅÇ]àÅÇ]àÅÇ]àÅÇ]àÅÇ]àÅÇ]àÅÇ]àÅÇ]àÅÇ]àÅÇ]àÅÇ]àÅÇ]àÅÇ]àÅÇ]àÅÇ]àÅÇ]àÅÇ]àÅÇ]àÅÇ]àÅÇ]àÅÇ]à^à^àÇà^àÇàÇàÇà^àÇÇ^àÇàÇàÇà^àÇà^àÇàÇàÇàÇàÇàÇâ¨≥≠≥¨≥≠≥à≥≠◊≥≥àâààÇàÇà^àÇÇ^àÇàÇàÇàÇàÇàà≥¨≥≠◊≠≥≠◊≠≥¨≥¨≥à¨Å¨Å¨¨≠¨≥¨≠¨¨ÇÇ]àÅÇ]àÅÇ]àÅÇ]àÅÇ]àÅÇ]àÅÇ]àÅ]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Åq]Å]Å]Å]Å]Å]Å]Ç]Ç^Ç]Ç^à]Ç^à]Ç^à]Ç^à^àÇà]Ç^Ç]Ç^à]Ç^à]Ç]Ç]àÇ≠¨≠à≠¨≥à≠¨≥¨≥¨¨Çà]Ç^à]ÇÇà]Ç^Ç]Ç^à^àÇàÇà¨≥¨≥¨≥¨≠¨≥¨≠¨≠¨¨Ç¨˛Å$¨à¨¨≠à¨àà]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]ÅÇ]à]Å]Ç]Ç]à]Å]Ç]Ç]à]Å]Ç]Ç]à]Å]Ç]Ç]à]Å]Ç]Ç]à]Å]Ç]Ç]à]Å]Ç]Ç]à]Å]Ç]Ç]à]Å]Ç]Ç]à]Å]Ç]Ç]à]Å]Ç]Ç]à]Å]Ç]Ç]à]Å]Ç]Ç]à]Å]Ç]Ç]à]Å]Ç]Ç]à]Å]Ç]Ç]à]Å]Ç]Ç]à]Ç]à^à^à^àÇàÇà^à^àÇàÇàÇàÇàÇàÇà^àÇàÇàÇàÇàÇÇ^àÇ≠¨≥à≠¨◊≠≠à≥≠≥≠≥¨à^àÇàÇàÇàÇàÇà^ÇÇàÇàÇàÇàà≠¨≥≠≥≠◊≠≥¨≥¨≠¨≥¨¨Å¨Å¨Ç¨¨≠¨≥¨≠ÇÇ]Ç]à]Å]Ç]Ç]à]Å]Ç]Ç]à]Å]Ç]Ç]]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Åq]Å]Å]Å]Å]Å]Å]^]Ç]Ç]Ç]Ç^à^Ç]Ç]à^à^àÇà^à]Ç^Ç]Ç]Ç^à]Ç^à]Ç^àà≠¨≠Ç≠¨≠Çà¨≥¨≥¨≠ÇÇ^Ç]à^Ç]Ç^à]Ç^à^Ç^Ç]ÇÇàà≠¨≥¨≥¨≥¨≠à≠à¨à¨à¨˛Å$ÇǨਨ≠àà]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]ÅÇ]Å]à]Ç]Ç]Å]à]Ç]Ç]Å]à]Ç]Ç]Å]à]Ç]Ç]Å]à]Ç]Ç]Å]à]Ç]Ç]Å]à]Ç]Ç]Å]à]Ç]Ç]Å]à]Ç]Ç]Å]à]Ç]Ç]Å]à]Ç]Ç]Å]à]Ç]Ç]Å]à]Ç]Ç]Å]à]Ç]Ç]Å]à]Ç]Ç]Å]à]Ç]Ç]Å]à]Ç]Ç]Å]à^à^àÇàÇàÇàÇâÇÇ^àÇàDzà(ÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàà≥≠≥à≠≠◊¨≠à≥≠◊≥≥¨≠Çà^˛àJÇàÇàÇàÇàÇàÇàÇàÇàà≥¨≠¨◊≠≥≠≥¨≠¨≥¨≥¨≠¨¨Å¨Å¨¨≥¨≠¨≥àÇ]Ç]Å]à]Ç]Ç]Å]à]Ç]Ç]Å]à]Ç]Ç]]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å9]Å]Å]Å]Å]Å]Å]Ç]Ç^à^àÇà^àÇà]Ç^Ç]àÇà]Ç^à]àÇà]àÇà]Ç^à^Ç]Ç^≠¨≥˛à4≥¨≠à≠¨≥≠≥¨≠àà]ÇÇàÇà^à]Ç^à^à^Ç]àÇà]à¨≠à≠¨≥¨≥¨≠ਨ≠¨¨à¨˛ÅáŞ¨à˛¨]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]ÅÅ]Å]Å]Ç]Å]Å]Å]Ç]Å]Å]Å]Ç]Å]Å]Å]Ç]Å]Å]Å]Ç]Å]Å]Å]Ç]Å]Å]Å]Ç]Å]Å]Å]Ç]Å]Å]Å]Ç]Å]Å]Å]Ç]Å]Å]Å]Ç]Å]Å]Å]Ç]Å]Å]Å]Ç]Å]Å]Å]Ç]Å]Å]Å]Ç]Å]Å]Å]Ç]rÅ]Å]Å]Ç]Å]Å]Ç]à^àÇàÇà^àÇàÇàÇàÇàÇàÇàÇà^àÇàÇàÇàÇà^Ç]àÇà^àà≥≠≥à≠¨≥¨≠à≥≠≥≠≥¨≠ÇàÇàÇàÇà^àÇà^àÇÇ]àÇà^àÇ≠¨≠¨≥≠≥≠≥¨≥¨≠¨≥¨¨à¨˛Å˝¨≠¨≠àà]Å]Å]Å]Ç]Å]Å]Å]Ç]Å]Å]Å]Ç]Å]˛]Ş]Ş]Ş]Ş]Ş]Ş]Ş]Ş]Ş]Ş]Ş]Ş]Ş]Ş]Ş]Ş]Ş]Ş]Ş]Ş]Ş]Ş]Ş]Ş]Ş]Ş]Ş]Ş]Ş]Ş]Ş]Ş]Ş]Ş]aÅ]Ç]Ç]Ç^à]^]Ç]Ç^à]à^Ç]àÇà]Ç]Ç^à^à]Ç^à]^^àÇà^≠¨≠ààÇ≠¨≠ਨ≥¨≥¨≠Çà^à]àÇà]Ç^à]Ç]Ç]Ç]à^à^àǨà≠¨≠¨≠ਨ≠à˛¨à¨àà˛Å ¨Ç¨à¨ààÅÅW]]Ş]Ş]Ş]Ş]Ş]Å]]Ç]Å]Ç]Å]Ç]Å]Ç]Å]Ç]Å]Ç]Å]Ç]Å]Ç]Å]Ç]Å]Ç]Å]Ç]Å]Ç]Å]Ç]Å]Ç]Å]Ç]Å]Ç]Å]Ç]Å]Ç]Å]Ç]Å]Ç]Å]Ç]Å]Ç]Å]Ç]Å]Ç]Å]Ç]Å]Ç]Å]Ç]Å]Ç]Å]Ç]Å]Ç]Å]Ç]Å]Ç]Å]4Ç]Å]Ç]Å]Ç]Å]à^à^àÇàÇà^Ç^àÇàÇàÇà^àÇàÇàÇàÇ≠ààÇàÇàÇâàâà≠˛à#◊≠≠à≠≠≥à≥≠≥≠◊≥≥¨≠ààÇàÇàÇàÇàÇàÇà^àÇàÇ˝à9≠¨≠¨◊≠≥≠◊¨≠¨≥¨≠¨≠¨≠à¨ÅàŨ¨≠¨≥àà]Ç]Å]Ç]Å]Ç]Å]Ç]Å]Ç]Å]Ç]Å]Ç]]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Åz]Å]Å]Å]Å]Å]Å]Ç]Ç^Ç]Ç]Ç]Ç^à]Ç^à]Ç^Ç]Ç^à]àÇà]à^à^àà≠ààÇàÇ≠¨≠Çàà≥à≠à≠¨≥¨≥¨≠àà]Ç^à^àÇà^Ç^à]Ç^àÇàÇàÇàà¨à≠¨≥¨≥¨≠ਨ≠à¨à¨à¨ÅàÅÅÇ¨à˛¨ÅÅ]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]ÅÅ]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å])Å]Å]Å]Å]Å]Å]Å]à^Ç]àÇÇ]àÇà^Ç^à^àÇà]àÇà^à^Ç^˛àlÇ≠à≠à≠ààÇ≠¨≥à≠à≠≠≥à≠à≥≠≥≠◊≠≠ÇàÇàÇàÇà^àÇàÇàÇààâààÇàǨà≠¨≥¨◊≠≥¨≠¨≠¨≥¨≠¨≠¨¨ÅáŨà≠¨≠à¨ÅÅ]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]˛]ÅW]]Ş]ÅW]]Ş]ÅW]]Ş]ÅW]]Ş]ÅW]]Ş]ÅW]]Ş]ÅW]]Ş]ÅW]]Ş]ÅW]]Ş]ÅW]]Ş]ÅW]]Ş]ÅW]]Ş]ÅW]]Ş]ÅW]]Ş]ÅW]]Ş]ÅW]]Ş]ÅW]]Ş]aÅW]]Ç]Ç]Ç]^]à^Ç^Ç]Ç^à]Ç]Ç]Ç^Ç]àÇàÇàà≠à≠àâ^àà≠¨≠Çàà≠¨≠Ǩ¨≥¨≠¨≥àà^à^Ç^à]Ç^à]Ç^à]àÇà]Ç^àǨà≠¨≠¨≥¨≠¨¨à˛¨à¨à¨¸Åàà≠à¨ÅÅW]]ÅW]]Ş]ÅW]]Ş]ÅW]]Å]]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Ç]Ç^àÇà^àÇàDzàÇàDzà'ÇÇ]àÇâà≠à≠à≠à≠à≥¨≠ààÇ≠≠◊àâà≥≠≥à≠à≥≠◊≠◊≠≥˝à#ÇàÇàÇàÇàÇàÇà^àÇàÇàà≠à≠¨≥≠≥≠◊≠≥¨≥¨≠¨≥˝¨$ÅàŨŨ¨≥¨¨ÅÅ]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]]ÅW]]Ş]ÅW]]Ş]ÅW]]Ş]ÅW]]Ş]ÅW]]Ş]ÅW]]Ş]ÅW]]Ş]ÅW]]Ş]ÅW]]Ş]ÅW]]Ş]ÅW]]Ş]ÅW]]Ş]ÅW]]Ş]ÅW]]Ş]ÅW]]Ş]ÅW]]Ş]ÅW]]Ş]`ÅW]]Ç]Ç^à^Ç^à^àÇà^Ç]Ç]àÇà^ÇÇàÇàà≠à≠à≠ààÇàÇÇ^àà≥¨≠Çàà≥à¨à≠¨≥¨≥¨≥¨à]àÇà^à^à^à^Ç]àÇà^à^Ç^àÇàà≠¨≥¨≥¨≥˛¨≠˝¨à¨à¨˛ÅàŞ¨ÇÅ]]W]]Ş]ÅW]]Ş]ÅW]]Ş]ÅÅ]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]vÅ]Å]Å]Å]Å]Å]Å]à^Ç^àÇàÇàÇàÇà^Ç]ÇÇàÇ≠à≠à≠à≠à≠à≠à≠àà^à^àÇ≠≠≥àâà≠≠≥à≠à≥≠≥≠◊≥≥ààÇàÇàÇàÇàÇà^ÇÇàà≠àà^àÇàÇ≠à≥¨◊≠≥¨≥¨≠¨≥¨≠¨≠¨¨à¨˛Å¨¨≠¨¨ÅÅ]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]V˛]V]]ÅV˛]V]]ÅV˛]V]]ÅV˛]V]]ÅV˛]V]]ÅV˛]V]]ÅV˛]V]]ÅV˛]V]]ÅV˛]V]]ÅV˛]V]]ÅV˛]V]]ÅV˛]V]]ÅV˛]V]]ÅV˛]V]]ÅV˛]V]]ÅV˛]V]]ÅV˛]V]]ÅV˛]tV]]Ç]Ç]à]à]Ç]Ç]Ç]Ç^àÇàÇâÇàà≠ààÇàÇàÇà]Ç]Ç^àà≥¨àÇàà≠¨≠Çà¨≥¨≥¨≥àà^à^à^à]à^Ç]Ç]ÇǨà≠àà^à^àÇàà≠¨≥¨≥¨≠ਨ≠à¨à¨à¨ÅÅ]ÅŨà¨àÇV˛]V]]ÅV˛]V]]ÅV˛]V]]ÅV]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]+Å]Å]Å]Å]Å]Å]Å]à^àÇàÇàÇà^àÇàÇâàâà≥à≠à≠à≠à≠ààÇ˛à    ÇàÇàÇàÇ≠¨◊˛à4≥≠≥à≠à≥≠◊≠≥≠≥ààÇàÇàÇàÇàÇàÇàÇâ¨≥≠≥≠âÇâàâà≠≠≥≠◊≥≥¨≥¨≥¨≥˛¨≠¨¨Åà˛Å≠¨≠ÅÅ]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]]ÅW]]ÅV]]ÅW]]ÅV]]ÅW]]ÅV]]ÅW]]ÅV]]ÅW]]ÅV]]ÅW]]ÅV]]ÅW]]ÅV]]ÅW]]ÅV]]ÅW]]ÅV]]ÅW]]ÅV]]ÅW]]ÅV]]ÅW]]ÅV]]ÅW]]ÅV]]ÅW]]ÅV]]ÅW]]ÅV]]ÅW]]ÅV]]ÅW]]ÅV]]ÅW]]Ç^Ç]à]Ç]^]Ç^˝à8âÇàà≠à≠à≠ÇàÇà^Ç]àÇàÇà^à^àÇ≠¨≠Çà¨≥¨≠ਨ≥¨≥¨≠¨à^Ç^à]Ç^à^Ç^à˛Ç¨à≥≠≥ààÇàÇàÇ≠¨≠¨≥¨≥¨≠˝¨'Ǩà¨ÇàÅÅ]Åà≠àà]ÅW]]ÅV]]ÅW]]ÅV]]ÅW]]ÅV]]ÅÅ]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]bÅ]Å]Å]Å]Å]Å]Å]à^Ç]à^Ç^àÇàà≥à≠à≠à≠à≠àâÇàÇàÇà^ÇÇàÇàÇà^Ç^≠≠≥à≠à≠≠≥¨àÇ≥≠≥≠≥≠≥àà^Ç^àÇà^àÇàÇàÇàÇ≥≠≥≠≥¨≠à≠˛à ≥≠≥¨≥≠≥¨≥¨≠ศàà˛Å¨¨≠ÇÅ]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]V˛]V]W]V˛]V]W]V˛]V]W]V˛]V]W]V˛]V]W]V˛]V]W]V˛]V]W]V˛]V]W]V˛]V]W]V˛]V]W]V˛]V]W]V˛]V]W]V˛]V]W]V˛]V]W]V˛]V]W]V˛]V]W]V˛]V]W]V˛]`VÅ^Ç]^]Ç^ààâÇààâÇàà≠ààÇà]Ç]Ç]Ç^à]Ç^à]Ç^Ç]Çà≠¨≠à¨à≠¨≠ÇÇà≥¨≠¨≥ààÇà]Ç^à]Ç^à]à^Ç]àà≥¨≠¨≠à¨ààÇàà≥¨≠¨≠à˛¨à¨à¨Ç¨à¨¸Å ¨àà]]W]V]W]V˛]V]W]V˛]V]W]V]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]xÅ]Å]Å]Å]Å]Å]Å]à^àÇàÇ≠à≠à≠à≠Ç≠à≥≠≥àà^àÇÇ^à^àÇâÇà^à^Ç^àÇ≠≠◊¨àà≥≠◊¨àÇ≠≠◊≠≥≠≥ààÇàÇàÇàÇà^àÇàÇàà≠à≥≠≥≠≥¨≠à≠à≠¨≥≠≥¨≥¨≠¨≠¨¨à≠¨≠¨¨˛Å¨¨≠àà]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]]]V]]ÅV˛]V]]ÅV˛]V]]ÅV˛]V]]ÅV˛]V]]ÅV˛]V]]ÅV˛]V]]ÅV˛]V]]ÅV˛]V]]ÅV˛]V]]ÅV˛]V]]ÅV˛]V]]ÅV˛]V]]ÅV˛]V]]ÅV˛]V]]ÅV˛]V]]ÅV˛]V]]ÅV˛] V]]Å]ÇÇâà≠à≠Dzà_ÇàÇ≠à≠àà]Ç^à]Ç]Ç]àÇà]Ç]Ç]Ç^àà≠¨≠Çàà≥¨≠Çàà≥¨≥¨≥¨¨ÇàÇà]Ç^à]Ç]àÇàÇàǨ¨≥¨≠¨≠à≠ààÇ≠¨≥¨≠à¨à¨à¨Ç¨à¨à¨àà˛Å    ¨ààÅÅV]]ÅV˛]V]]ÅV˛]V]]ÅV˛]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]1Å]Å]Å]Å]Å]Å]Å]àÇâà≠à≠àâÇàÇàÇàà≥≠≠^àÇàÇà^Ç]ÇÇà^àÇàDzàÇ≠¨≥à≠à≠¨◊≠àÇ≠≠≥¨≥≠≥à≠àà^àÇà^à˛Çàà¨Ç≠¨≥≠≥≠≥¨≥¨≠à≠à≥¨◊¨¨Ç≠à¨à˛¨à≠¨¨Çà˛Å¨àà]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]WV]V]V]V]V]V]VÅÅàÇàÇàÇà^Ç]Ç^à^àà≥ÇÇ]Ç^à^Ç]Ç]Ç]Ç]à]àÇà^àÇ≠¨≠ààÇ≠≠≥Çàà≠¨≠¨≥à¨Çà]Ç^à]Ç]Ç]ÇǨ˛à>≠à≠¨≥¨≠à≠ààÇàà≠¨≠^ÇǨǨà¨Ç¨à¨à¨ÅÅVÅŨÅÅV]V]V]V]V]V]V]V]V]V]V]V]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]sÅ]Å]Å]Å]Å]Å]ÅÅàà≠ààÇàÇà^à^à^àà≥≠≠ÇÇ^àÇàÇàÇàÇà^Ç^àÇàÇàÇà¨◊≠≠Ç≠≠◊≠≠à≠¨≥≠≥≠≥¨¨ÇàÇàÇàÇàÇàà≠à≥≠≥¨≥¨≥≠◊≠≥¨≥¨≠à≠≠≥àâǨà≠¨¨à˛¨à≥¨¨˛Å¨à¨ÅÅ]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]yV]V]V]V]V]V]]àÅàÇà^Ç^à]Ç^Ç]Ç]àà≠àà]Ç^Ç]ÇÇà^à^à]Ç^à^à^àÇ≠≠≥àÇÇ≥¨≥àâÇà¨≥¨≥¨≠ÇÇ]Ç^à^à^àǨਨ≥¨≠à≠¨≥¨≥¨≠¨≠ààÇàÇà^ÇǨà¨Ç¨à¨Ç¨à¨¸Å¨ÇÅV]V]V]V]V]V]V]V]V]V]V]V]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]@Å]Å]Å]Å]ÅVÅ]àÇàÇà^àÇà^à^à^à^ÇÇ≥≠≠ÇàÇÇ]Ç^àÇàÇàÇà^àÇàÇà^àà◊≠≥Çà¨◊≠≥˛à1≥¨≥≠≥¨≠ÇÇ^àÇàÇàà¨à≠¨≥¨≥≠≠à≥≠≥≠◊≠≥¨≥àà^âàÇ^¨à≠à¨à¨à¸¨˛Å´¨¨]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]{V]V]V]V]V]VÅ]àÇà]Ç]Ç]Ç]à^à^Ç]àà≠àà^à]^]Ç]Ç]Ç]à^Ç]à^Ç]^]à¨≥¨à^àà≥¨≠^àà≠¨≥¨≠àà]Ç]Ç]àà¨Ç¨à≠¨≠¨≠à≠à≠¨≠¨≥¨≠àà^Ç^à^ÇǨà¨Ç¨Ç¨à¨à¨à¨˛Å¨ÅÅV]V]V]V]V]V]V]V]V]V]V]V]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å] Å]Å]Å]Å]Å]Å]˛àÇàÇà^à^àÇàÇàÇàà≠¨≠ÇàÇàÇà^à^Ç^˛àDÇàÇà^à^àÇ≥≠≥àâà≠≠◊≠âÇ≠≠≥≠≥¨≠ààÇàÇàà≠à≠¨≥≠≥≠≥¨≥≠≥¨≥≠≥≠≥àâàâÇàÇâà¨à≠à¨à˛¨à˛¨à¨Å´Å¨ÅÅ]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V];V]V]V]V]V]V]^àÇà^à^à^Ç]Ç^à]àǨà≠àà]Ç^à^Ç^Ç]Ç^à^à^à^à^Ç^àà≥¨≠˛Ç?≠¨≠ÇàÇ≠¨≥¨≠Çà^à^àà¨à¨à≠¨≥¨≥à≠à≠à≠¨≥¨≠àâÇàÇà^Ç^àÇàà¨Ç¨à¨Ç¨à¨Ç¨ÅÅIJÅV]V]V]V]V]V]V]V]V]V]V]V]]VÅ]]VÅ]]VÅ]]VÅ]]VÅ]]VÅ]]VÅ]]VÅ]]VÅ]]VÅ]]VÅ]]VÅ]]VÅ]]VÅ]]VÅ]]VÅ]]VÅ]]VÅ]]VÅ]]VÅ]]VÅ]]VÅ]]VÅ]]VÅ]]VÅ]]VÅ]]VÅ]]VÅ]]VÅ]]VÅ]]VÅ]]VÅ]B]VÅ]]VÅ]]VÅ]àÇàÇà^àÇà^àÇà^ÇÇàà≠¨≠Çà^àÇàÇÇ^à^Ç^àÇàÇàÇÇ^à^àà◊≠â^âà≥¨≠˛à/≥≠≥¨≠ÇàÇâà≠à≠¨≥≠◊≠≥¨≥¨≠à≠¨≠¨≥àâÇâàà^àÇàÇàà¨à≠à¨à˛¨à¨à¨˝Å]Å]]VÅ]]VÅ]]VÅ]]VÅ]]VÅ]]VV]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]VÅ]Ç^à]Ç]à^Ç^à]Ç]Ç^àà≠àà^Ç]ÇÇà]Ç]Ç]Ç^Ç]àÇÇ]^]^]à¨≥àÇ^àà≠¨≠^àà≠¨≠àà]àÇàÇàà≠¨≥¨≥à≠à≠à≠à≠à≠àà^ààâ^Ç^à^àÇàà¨à¨Å¨à¨Ç¨Ç¨ÇàÅÅVÅV]V]V]V]V]V]V]V]V]V]V]V]Å]Å\Å]Å\Å]Å\Å]Å\Å]Å\Å]Å\Å]Å\Å]Å\Å]Å\Å]Å\Å]Å\Å]Å\Å]Å\Å]Å\Å]Å\Å]Å\Å]Å\Å]Å\Å]Å\Å]Å\Å]Å\Å]Å\Å]Å\Å]Å\Å]Å\Å]Å\Å]Å\Å]Å\Å]Å\Å]Å\Å]Å\Å]Å\JÅ]Å\Å]Å\Å]Å]àÇà^à^Ç^àÇàÇàÇà^àà≠¨≥ààÇà^à^à^àÇàÇà^àÇàÇàÇà^àÇ≠≠≥àà^≠≠◊≠≠à≠¨◊≠≠˛à¨à≠¨≥≠≥≠≥≠≥≠≠¨≥≠≥¨≠à≠àâàâàâÇàÇâ˛à≥¨≠à˛¨à≠˛¨≠à˛Å]Å\Å]Å\Å]Å\Å]Å\Å]Å\Å]Å\Å]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]7V]V]V]V]V]VÅ^à]Ç^Ç]^]à^àÇà^Ç]àà≠àà^Ç]Ç]Ç]Ç^à^Ç]Ç^Ç^à^àÇà˛^^≠¨≠^Ç^≠¨≥¨≠Ç≠¨≥ààǨÇàà≥¨≥¨≠¨≠¨≠à≠¨≥à≠Çà^ààâÇàÇà^Ç^àÇàà¨Ç¨Ç¨Ç¨à¨à¨à¨ÅÅV]V]V]V]V]V]V]V]V]V]V]V]V]]VÅ]]VÅ\]VÅ]]VÅ\]VÅ]]VÅ\]VÅ]]VÅ\]VÅ]]VÅ\]VÅ]]VÅ\]VÅ]]VÅ\]VÅ]]VÅ\]VÅ]]VÅ\]VÅ]]VÅ\]VÅ]]VÅ\]VÅ]]VÅ\]VÅ]]VÅ\]VÅ]]VÅ\]VÅ]]VÅ\]VÅ]]VÅ\J]VÅ]]VÅ\]VÅ]à^à^àÇà^Ç^àÇàÇàÇàÇ≠¨≠àà^Ç^àÇà^àÇà^àÇà^àÇàÇ≠àà]àà≥¨≠ààÇ≥≠≥¨≠¨≥≠≥˛à+≠¨≥≠≥≠≥¨≥≠≥¨≥¨≥¨≠àà^àÇâà≠àâÇà^àÇàà≠à≠à¨à¨à¨à˛¨à¨]]VÅ]]VÅ\]VÅ]]VÅ\]VÅ]]VÅ\]VV]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]dV]V]V]V]V]V]]Ç]à^àÇà]^]à^Ç]Ç^àÇ≠àà^Ç]Ç]à^Ç]Ç]Ç^à^à^à]ÇÇ≠ÇÇ]àà≠¨â^Çà≥¨≠¨≥¨≠à¨Çàà≥¨≠¨≥¨≠¨≠à≠à≠à≠Çà^Ç^Ç^˛à1^à^Ç^à^àǨà¨Ç¨Ç¨Ç¨à¨Ç¨ÅÅV]V]V]V]V]V]V]V]V]V]V]V]V]Å]]VÅ]]VÅ]]VÅ]]VÅ]]VÅ]]VÅ]]VÅ]]VÅ]]VÅ]]VÅ]]VÅ]]VÅ]]VÅ]]VÅ]]VÅ]]VÅ]]VÅ]]VÅ]]VÅ]]VÅ]]VÅ]]VÅ]]VÅ]]VÅ]]VÅ]]VÅ]]VÅ]]VÅ]]VÅ\Å]ÅV]VÅ]]VÅ]]VÅ]]VÅ\]]à^Ç^˛àYÇàÇàÇàÇà^àÇ≠¨≥àà^àÇàÇàÇà^àÇàÇàÇà^àÇà¨≥à^^à¨≥¨â^≠≠◊≠≥≠≥≠≠à≠¨≥≠≥≠≥≠≥≠≥¨≥¨≠¨≥à≠àâÇàÇâàâÇà^àÇâ˛à≠¨≠à˛¨"à¨à¨à≠¨¨]]V]VÅ]]VÅ]]VÅ]]VÅ]]VÅ]]VÅ]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]VÅ]Å]]V]V]V]?V]V]V]V]V]V]]Ç]Ç^à]àÇà^Ç^à]Ç^àÇ≠àà^Ç^Ç]Ç]Ç^à^Ç]Ç^à]Ç]ÇÇ≠¨≠]^]àà≥˛àV≠¨≥¨≠¨≥à¨à≠¨≥¨≥¨≥¨≥¨≠à≠à≠àâààÇà^ààâÇÇ^à^àà¨à¨Ç¨à¨à¨Å¨Ç¨Ç¨à¨ÇÅV]V]V]V]V]V]V]V]V]V]V]V]V]]V]V]VÅ\]V]V]VÅ\]V]V]VÅ\]V]V]VÅ\]V]V]VÅ\]V]V]VÅ\]V]V]VÅ\]V]V]VÅ\]V]V]VÅ\]V]V]VÅ\]V]V]VÅ\]V]V]VÅ\]V]V]VÅ\]V]V]VÅ\]VÅ]ÇŨàà]ÅV]VÅ\:]V]V]VÅ\]V]]à^àÇà^àÇàÇà^Ç^à^ÇÇ≠¨≠ààÇà^à^Ç^àÇÇ^Ç^Ç^àÇà^â¨≥¨≠˛^(≠≠≥¨≥≠≥≠◊≠≥¨≥¨≠¨≥≠≥¨≥≠≥≠≥¨≠¨≠àâàâàà^àÇàà≠˛à ≠à≠¨≥¨≠¨≠¨¨à˛¨ à¨à¨à¨Å]V]V]VÅ\]V]V]VÅ\]V]V]VÅ\]VV]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]]Ç]àà¨Çà]]V]V]V]V]V]V]V\VÅ]à^à]Ç^à]à^Ç]Ç^Ç]Çà≠ààÇà]Ç^ÇWÇ^à]Ç]Ç]Ç]Ç]ÇÇ≠¨≥àà]Çà≥¨≠¨≥¨≠¨≠à≠¨≥¨≠¨≠à≠¨≥¨≠¨≠à¨àà^à^à^ÇÇàÇàÇàÇàà¨à¨¨≠à¨à¨à¨Ç¨Å¨Ç¨Ç¨ÇÅV\V]V]V]V]V]V]V]V]V]V]V]V]Å]]VÅ\]VÅ]]VÅ\]VÅ]]VÅ\]VÅ]]VÅ\]VÅ]]VÅ\]VÅ]]VÅ\]VÅ]]VÅ\]VÅ]]VÅ\]VÅ]]VÅ\]VÅ]]VÅ\]VÅ]]VÅ\]VÅ]]VÅ\]VÅ]]VÅ\]VÅ]]VÅ\]VÅ]àǨà¨à≥¨à]ÅV]V)Å]]VÅ\]VÅ\]]àÇà^àÇà^àÇà^àÇà^àà≠¨≥ààÇàÇà^àDzàJÇà^àÇÇ^àÇàà◊≥≥ààÇ≠≠◊≠≥≠◊≠≥¨≥≠≥≠◊≠≥≠≥≠≥≠◊≠≥¨≠àâàâààÇâà≠à≠ààÇâà≠à≥¨≠¨≥¨≠¨¨à¨à˛¨à˛¨ÅÅ\]VÅ\]VÅ]]VÅ\]VÅ]]VÅ\]VÅ]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]WÇ^àÇàÇà¨≠àÅV]V];V]V]V]V]V]V]]à^Ç^à]Ç]à]Ç^Ç]Ç^àà≠àâ^Ç^à^Ç^à^à^à]Ç^à]Ç^à^à¨≥¨≠˛àZ≠¨≥¨≥¨≥¨≠¨≠¨≥≠≥¨≠¨≥¨≥¨≥à¨Çà^àÇàÇàÇàÇàÇà]àÇàÇàà≠ਨ≠à¨à¨Å¨à¨Ç¨à¨àÅV]V]V]V]V]V]V]V]V]V]V]V]V]]VÅV]V]V]VÅV]V]V]VÅV]V]V]VÅV]V]V]VÅV]V]V]VÅV]V]V]VÅV]V]V]VÅV]V]V]VÅV]V]V]VÅV]V]V]VÅV]V]V]VÅV]V]V]VÅV]V]V]VÅV]V]]Ç]ÇǨǨà≠¨≥àÅV]Va]VÅV]V]V]V]]Ç^àÇàÇà^Ç^Ç^Ç^à^ÇÇ≠¨≥àà^Ç^àÇà^à^Ç^àÇà^àÇàÇàà≥≠◊≠≥à≠≠≥≠◊≠≥¨≥≠≥¨≥≠≥¨≥≠≥¨≥≠≥¨≠àà^âàâà≠àâDzà^ÇÇàÇàÇ≠¨≠¨≠¨≥¨¨à¨à¨à¨à˛¨ÅÅV]V]V]V]VÅV]V]V]VÅV]V]V]VV]V]V\V]V]V]V\V]V]V]V\V]V]V]V\V]V]V]V\V]V]V]V\V]V]V]V\V]V]V]V\V]V]V]V\V]V]V]V\V]V]V]V\V]V]V]V\V]V]V]V\V]V\V]V]WÇ]^]àÇàÇàà≠¨¨ÅÅV\GV]V]V\V]V\V]]Ç]à^à]Ç]Ç]^]Ç^Ç]ÇÇ≠ààÇÇ]Ç]à^à^Ç]Ç^à]Ç]Ç^à^¨¨≥¨≥¨≠à≠¨≠¨≥à≠¨≥˛¨N≠à≠à≠¨≠¨≥¨≠à≠ÇàÇà^ÇÇàÇà^à]^]Ç]Ç]àǨà¨à¨¨≠à¨Å¨Å¨Ç¨Ç¨àà]]V]V\V]V]V]V\V]V]V]V\V]V]tÅV]VÅ\]VÅV]VÅ\]VÅV]VÅ\]VÅV]VÅ\]VÅV]VÅ\]VÅV]VÅ\]VÅV]VÅ\]VÅV]VÅ\]VÅV]VÅ\]VÅV]VÅ\]VÅV]VÅ\]VÅV]VÅ\]VÅV]VÅV]VÅ]Å]Ç]Ç^àÇàà≠˛à<≥≠≥¨≥àÅV]V]VÅ\]VÅV]]à^ÇÇàÇà^àÇà^à^à^àÇ≠¨≥àà^àÇàÇàÇà^àÇàÇà^Ç^â˛à'≥≠≥≠◊≠≥¨≥≠≥¨≥≠≥≠◊¨≠à≠à≠à≥≠≥¨≥¨≠à≠ààÇà^Ç^˛àÇàÇàÇà˛Ç≠¨≠˛¨    ≥¨≠à¨à¨à¨à˛¨ÅÇ]]VÅ\]VÅV]VÅ\]VÅV]VÅ\]VÅVrV]V\V]V]V]V\V]V]V]V\V]V]V]V\V]V]V]V\V]V]V]V\V]V]V]V\V]V]V]V\V]V]V]V\V]V]V]V\V]V]V]V\V]V]V]V\V]V]V]V\V]V]WÅ]Ç]Ç^àÇà]˛àÇà¨≥¨≠¨¨ÅÅV]V\V]V]V]V]]à^Ç^à]Ç^à^àÇà]Ç^àÇ≠à≠^Ç^à]Ç]Ç]Ç^Ç]Ç^Ç]ÇÇà]à¨≥¨≥¨≥¨≠¨≥¨≥¨≠¨≥¨≠àà^à^â¨≥à≠ààÇàÇà]Ç^Ç]Ç^à^à^à^à^Ç]Çà≠¨¨Ç¨¨≠à¨#ŨǨŨǨÇàÅ]V\V]V]V]V\V]V]V]V\V]V]V]]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]WÅ]Ç]àÇà^àÇà^àÇàÇ≠à≠¨≥≠≥¨≥ÇÅV]V]V]V]V]]Ç^àÇà^àÇà^˛à@^àÇà^â¨≠àà^à^à^Ç]àÇà^à^àÇà^à^Çà≥≠≥≠≥≠≥≠≥¨◊≠≥¨≥≠≥à≠ÇàÇâà≠à≠ÇàÇàÇà^˛àÇà^Ç^˛à4ÇàÇà^àǨ¨≥¨¨à≥¨¨Ç¨à¨Ç¨à¨à¨àÇV]V]V]V]V]V]V]V]V]V]V]V]V˛V]V\V]˛V]V\V]˛V]V\V]˛V]V\V]˛V]V\V]˛V]V\V]˛V]V\V]˛V]V\V]˛V]V\V]˛V]V\V]˛V]V\V]˛V]V\V\˛V$]W^]Ç]^]Ç]Ç]Ç]^]ÇÇàǨà≠¨≥¨≠¨¨Å]V\V\V]˛Va]WÇ^à]Ç^Ç]Ç^à]àÇà]Çà≠à¨ÇÇ]Ç]ÇW^^à]Ç]Ç]à^Ç]^]àà≠¨≥¨≥¨≥à≠¨≥ਨ≠ààÇàÇàÇà^Ç]Ç]Ç]à]àÇàÇà^Ç]Ç^à^Ç]Ç]à^ÇDz¨Ũà≠à¨Å¨Å¨Å¨Å¨Ç¨Å]V\V\V]˛V]V\V]˛V]V\V]VVtÅV]V]V]VÅV]V]V]VÅV]V]V]VÅV]V]V]VÅV]V]V]VÅV]V]V]VÅV]V]V]VÅV]V]V]VÅV]V]V]VÅV]V]V]VÅV]V]V]VÅV]V]V]]Å]Ç]à^à^àÇàÇàÇàÇàÇàÇ≠˛à≥≠≥≠≥≠≥¨≠ÅÅV]V]VÅV]WÇ^à^àÇà^àÇà^˛à0ÇàÇ≠à≥¨à]Ç^Ç^àÇàÇàÇà^àÇàÇà^ÇÇ≥≠≥≠◊≥≥≠≥≠◊≠≥¨≥¨≠ààDzàÇàÇàÇà^Ç^àÇààâÇàÇàÇààâàà^˛à^à¨≠˛¨    ≠¨≠à¨Ç¨à¨à˛¨à¨]]V]V]VÅV]V]V]VÅV]V]V]VÅVnV]V\V]V\V]V\V]V\V]V\V]V\V]V\V]V\V]V\V]V\V]V\V]V\V]V\V]V\V]V\V]V\V]V\V]V\V]V\V]V\V]V\V]V\V]V]V]W]]à^à^à^àÇà^àÇàDzàǨà≠Çàà≥¨≥¨≥¨≠¨à]]V]V\V]V]]Ç]Ç^à]Ç^à]ÇÇà^Ç^àÇ≠¨≠^^]Ç]ÇÇà]àÇà]Ç^Ç]Ç^à]à¨≥¨≥¨≥¨≠¨≥¨≥¨≠à¨àà^Ç]Ç]àÇà^àÇÇ]Ç^à^à^à^àÇà]àÇà^Ç^à]ÇÇ≠à¨à¨'Ǩà¨Å¨Å¨Å¨Ç¨Å¨ÅÅV\V]V\V]V\V]V\V]V\V]V\V]Z]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]VŞ]Ç^à^àÇàà≠ààÇàÇàÇ≠à≠à≥¨≥¨≠à≠à≥≠≥¨≥≠≠à¨]]V]V]V]WÇ]à^Ç^à^Ç^àÇà^à^Ç^àà≠à≠ÇÇ]à^à^àÇàÇàÇÇ]àÇàÇàà≠≠◊≠≥≠◊≠≥¨≥à≠ÇàÇàÇà^Ç]Ç^àÇàÇàÇà^àÇàÇàDzàÇà^Ç^àÇà^àÇàà≥¨¨Ç¨à¨Ç¨Ç¨à¨à¨à˛¨]]V]V]V]V]V]V]V]V]V]V]V]V˛V]˛V\˛V]˛V\˛V]˛V\˛V]˛V\˛V]˛V\˛V]˛V\˛V]˛V\˛V]˛V\˛V]˛V\˛V]˛V\˛V\˛V,]V]]^]^]Ç]Ç^àÇ≠àà^Ç]Ç]àÇàÇ≠¨≥¨≠¨¨à¨à≠¨≠¨≥¨¨Çà˛V\˛Va]W^]Ç]Ç]Ç]Ç^Ç]Ç^Ç]ÇÇ≠à≠àà]^]Ç]Ç^à]Ç^Ç]Ç]Ç^à^àà≠¨≥¨≥¨≥¨≠Çà^Ç]Ç]àÇÇ]^]Ç]Ç]Ç^à^Ç]à^à]ÇÇà^Ç^Ç]^]à]^]àDz¨ŨŨŨŨŨŨŨǨÅÅV\˛V\˛V]˛V\˛V]˛V\VV]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]VÅ]Å]àÇà^àÇà^à^ÇÇ≥≠≥ààÇà^àÇàÇàà≥≠◊≠≥¨≠à≠¨≥≠≥≠3≥¨≠àà]]V]V]WÇ^à^à^à^à^Ç^àÇà^àÇ≠¨≥¨à^àÇà^à^à^àÇà^àÇàÇ˝à≥≠≥≠◊≥◊≠◊≠à^à^Ç^àÇà^àÇÇ^à^Ç^˛àDzà
  2632. ^àÇàÇàÇàÇàDzà^Ç^≠¨≥¨¨à¨Å¨à¨Ç¨à¨Ç¨à˛¨Å]V]V]V]V]V]V]V]V]V]V]V]VV\˛V]V\V\˛V]V\V\˛V]V\V\˛V]V\V\˛V]V\V\˛V]V\V\˛V]V\V\˛V]V\V\˛V]V\V\˛V\˛V4]V]]Ç]Ç^à]Ç^à]Ç^Ç]àà≥ààÇà]^]ÇÇàǨà≠¨≠¨≠¨≠à≠¨≥¨≠¨≥à¨ÇDzVc\V]]à^Ç^Ç]à^ÇW^^à]Ç]àà≠¨≠Ç^]à]Ç]Ç]Ç^Ç]Ç^à^àÇà^àà≥¨≠¨≥à≠¨≥ÇÇ]Ç]Ç^à]Ç^à]Ç^Ç]Ç^à^à^à]Ç^à]ÇÇà]àÇà]à^Ç]ÇDz¨à¨Å¨Å¨Å¨Å¨Å¨Å¨Å¨ÅŞV]V\V\˛V]V\V\˛V]V\V\]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]WÇ^Ç^àÇà^Ç^Ç^à^à^àÇ≠¨≥àà^à^ÇÇàà¨à≠¨≠¨≥≠≥¨≥¨≥¨≥≠≥¨≠à¨ÇàV]V]WÇ^à^Ç^˛àh^Ç^à^Ç^Ç^≠¨≥¨â^Ç^Ç^Ç^àÇà^Ç^àÇàÇàÇàà≠¨≥¨≠à≠à≠¨≠Çà^ÇÇà^àÇàÇà^àÇà^Ç^àÇà^àÇàÇàÇà^à^Ç^Ç^à^àÇàà≥¨¨Å¨Å¨Å¨à¨Å¨à¨à˛¨ÅÅV]V]V]V]V]V]V]V]V]V]V]V2VV\˛V\2VV\˛V\2VV\˛V\2VV\˛V\2VV\˛V\2VV\˛V\2VV\˛V\2VV\˛V\2VV\˛V@\2VV\V]W]W^]Ç]Ç^à]^]Ç]Ç]Ç]Ç]àà≠¨¨^Ç]Ç]Ç^àÇàǨà¨à≠¨≥¨≠à≠¨≠à¨ààÅàÅŞV]]Ç^ÇWÇ^à]^]Ç]Ç]Ç]Çà≠¨≠Ç^]Ç]Ç]^]Ç]Ç]Ç]à]Ç]Ç^àÇàÇà^àÇàÇ≠Çà]Ç]Ç]Ç]Ç^à^Ç]Ç^Ç]Ç^à]Ç^à]Ç]Ç]Ç]Ç]Ç]Ç]Ç^à]à¨≠ÇàÅàŨŨÅàŨŨŨÅÅV\2VV\2VV\˛V\2VV\˛V\2Vw]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]]ÇÇàÇà^àÇà^à^Ç^àÇà^à^àà≥≠≥àâÇàÇàÇÇ^àÇàà≠¨≠¨˛≥P¨≥¨≥≠≥¨¨Å¨à¨ÇÅV\Và^Ç^àÇàÇà^àÇàÇÇ^àÇà¨≥≠à^Ç^à^à^ÇÇàÇà^àÇÇ^àÇàÇàÇà^àÇàÇ≠¨âÇà^àÇàÇà^˛à^àÇàÇàÇàDzà>ÇàÇÇ^àÇÇ^àÇàÇà^Ç^àà≥¨≠à¨Å¨à¨à¨à¨Ç¨à¨à¨ÅÅV]V]V]V]V]V]V]V]V]V]V]VV\˛V\˛V\˛V\˛V\˛V\˛V\˛V\˛V\˛V\˛V\˛V\˛V\˛V\˛V\˛V\˛V\˛V\˛V\˛V4Ç]à^à^àÇà]Ç]Ç]Ç^Ç]Ç^Ç^à¨≥àà^Ç]Ç]Ç]ÇÇàÇàà≠à¨à≥¨≠¨≠¨≠¨¨˛ÅiàÅàÅÅV]]Ç]Ç^Ç]Ç]Ç^à^Ç]Ç]Ç^¨¨≥ÇÇ]Ç]Ç^à]Ç^Ç]Ç^Ç]Ç^à^Ç^Ç]Ç^à^àà≠Çà^Ç]ÇÇà]Ç]Ç]Ç^Ç]à^à]Ç^à^à^Ç]Ç^à]Ç^Ç]Ç^Ç]Ç^àà˛¨ÅÇŨŨŨŨŨŨÇàV\V\˛V\˛V\˛V\˛V\˛V\]V]V\V]V]V]V\V]V]V]V\V]V]V]V\V]V]V]V\V]V]V]V\V]V]V]V\V]V]V]V\V]V]V]V\V]V]V]V]]àÇà^àÇàÇà^Ç^àÇà^à^à^àà≥¨≥Çà^Ç^Ç^àÇàÇàà≠¨≥à≠¨≥≠≥¨≥¨≥ààÅÇÅàǨÅÅ]Å]àÇà^à^Ç^˛à^à^Ç]àà≥¨≠^à^Ç^à^àÇÇ]˛Ç9]àÇàÇàÇÇ^àÇàÇàÇ≠¨≠àà^ÇÇàÇà^Ç^à^à^àÇà^à^àÇàÇà^àÇàÇàÇà^àÇà^à˛Ç+≠¨≠ǨŨŨà¨Å¨Ç¨Å¨à¨ÅÅV\V]V]V]V\V]V]V]V\V]V]Vı˛V\2˚V\2˚V\2˚V\2˚V\2˚V\2˚V\2˚V\2˚V\2˘V^]Ç]^]Ç]Ç]Ç]Ç]Ç]Ç]Ç]Ç^àà≠àà]Ç]Ç]Ç^àÇàÇàÇ≠¨≠à¨à≠¨≠¨≠ààÅÇ]ÅÅàÇàÅÅW^]Ç]Ç^Ç]Ç]à]Ç^Ç]^^≠¨≠ÇÇ]Ç]Ç^Ç]Ç]^]à]Ç]à]Ç]Ç]Ç^à]Ç]ÇÇ≠àà]Ç]Ç]Ç]Ç]7Ç^à^Ç]Ç]Ç]à^Ç^à]Ç]Ç]àÇàÇà^Ç]ÇÇà]Çà≠à¨ÅàÅàŨŨŨÅàŨÅà]\2˚V\2˚V\2¸Vp]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V\VÅ]Ç^à^à^à^Ç^à^à^àÇà^à^àà≥≠≠àà^Ç^àÇàÇ≠˛àK≠≠≥≠≥¨≠¨≥≠≥¨≥à¨ÅàÅÇŨà¨Åà^Ç^àÇà^àÇÇ^àÇà^à^à¨≥≠à^àÇà^àÇà^à^ÇÇàÇàÇàÇÇ^àÇàÇà^ÇDz≠VÇà^àÇà^Ç^àÇàÇàÇà^àÇàÇàÇàÇàÇàÇàÇàà≠ààÇàÇà^àÇ≠¨≥¨¨Å¨Å¨Å¨à¨Å¨à¨Ç¨ÇÅV]V]V]V]V]V]V]V]V]V]V]VV\2VV\˛V\2VV\˛V\2VV\˛V\2VV\˛V\2VV\˛V\2VV\˛V\2VV\˛V\2VV\˛V\2VV\˝V2VVÅ]Ç^à]Ç^Ç]^]Ç]à^à]Ç^Ç]à¨≥àà^Ç]Ç^Ç]ÇÇàÇàà≠¨≠¨≠Ǩ¨≥¨≠¨≠ÇàÅÇ]ÅÅàÅàÇÇ]Ç]Ç]àÇà]Ç^à]Ç^àÇ≠¨≠ÇÇ]Ç]Ç^à^Ç]Ç]Ç^à]à^à]Ç^à^à^Ç]àà≠Çà^Ç]à^Ç;]Ç^à]Ç^à]Ç^Ç]àÇà^àÇà]ÇÇà^àÇà^àÇà]^^àà≠¨¨ÅáŨÅàŨÅàŨŨŨ]\V\˛V\2VV\˛V\2VV\˛V\\V]V\V]V\V]V\V]V\V]V\V]V\V]V\V]V\V]V\V]V\V]V\V]V\V]V\V]V\V]V\V]V\V]V\V\V\V]WÅ]à^à^àÇÇ^à^à^àÇàÇàÇà^àà≥¨≥àà^àÇà^àÇàǨà≠¨≥≠≥¨¨à¨¨◊≠≥¨≠à¨Åà˛Å[¨Çà^à^Ç^àÇà^à^Ç^àÇà^àà≥¨≠^Ç^àÇà^àÇà^àÇà^àÇàÇàÇàÇàÇà^àÇ≠à≠Çà^àÇà^àÇà^à^à^à^à^àÇàÇàÇàÇà^Ç^àÇÇ^˛àÇà^àÇ≠¨≠à¨Å¨Å¨Å¨Å¨Å¨Å¨Ç¨Çà˛V]V\V]V\V]V\V]V\V]V\V2˛V2˛V2˛V2˛V2˛V2˛V2˛V2˛V2˛V2˛V2˛V2˛V2˛V2˛V2˛V2˛V2˛V2VV\V]W^]Ç^à]Ç^Ç]Ç^Ç]à^Ç]à^à]Ç^àà≠¨à^àÇà]Ç]àÇàÇàÇ≠¨≥à¨ÇàŨ¨≥¨≠¨¨ÇÇÅà]ÅÅàÅÇ]à^Ç^à]Ç]Ç]^]à]Ç^¨à≠àà]Ç^à]à^à]Ç^à]Ç^à^à^à]à^Ç]Ç^ÇǨàà/]Ç^à]Ç^Ç]Ç^Ç]Ç]Ç]Ç]Ç]Ç^Ç]Ç]Ç]Ç^Ç]àÇà]Ç^à]àà≠à¨Åà˛Å
  2633. àÅàŨÅàŨŨÅ\2˛V2˛V2˛V2˛V2˛V2V]V\V]V\V]V\V]V\V]V\V]V\V]V\V]V\V]V\V]V\V]V\V]V\V]V\V]V\V]V\V]V\V]V\V]W]]à]Ç^Ç^àÇàÇà^Ç^à^àÇà^àÇà^àÇàà≥≠≥ààÇà^àÇàÇ≠ààÇ≠≠≥≠≥¨¨Ç¨à¨¨3◊≠≥¨≠¨¨ÅàÅÇÅàÇàà≠àâÇà^à^Ç^àÇàÇàà≥≠≠ÇàÇàÇâààÇà^Ç^àÇàDzàDzà(^ÇÇà^≠¨≠àâààÇàÇàÇàÇÇ^àÇàÇàÇÇ^àÇà^àÇà^àÇàDzà2ÇàÇàÇàà≠¨≥¨¨Å¨Å¨Å¨à¨Å¨à¨Å¨¨àV]V\V]V\V]V\V]V\V]V\V]VV\˝V2VV\˝V2VV\˝V2VV\˝V2VV\˝V2VV\˝V2VV\˝V2VV\˝V2VV\V]W]]Ç^à]^]Ç]Ç^à]Ç]Ç]Ç]Ç]Ç^Ç]Ç^Ç^à¨≥àà^à]Ç]Ç]àÇà^àà≠¨≠¨≠ÇàÇàǨ¨≥¨≠¨≠ÇÇÅÇ]ÅÅàÇâàâÇà^Ç]Ç]Ç]à^Ç]à¨≥àà^Ç]àÇà]Ç]Ç]Ç^Ç^àÇà^à^à^Ç]à0]ÇÇ≠àà^àÇÇ^à^àÇà]^]àÇà^Ç]^^à]Ç^à^àÇà^àÇà^Ç^à^Ç^àDz¨ÅàÅà˛Å¨Å¨Å¨ÅàŨÅ]VV2VV\˝V2VV\˝V2VV\\V]V\V\V\V]V\V\V\V]V\V\V\V]V\V\V\V]V\V\V\V]V\V\V\V]V\V\V\V]V\V\V\VÇ^Ç^àÇà^à^Ç^àÇà^à^à^à^à^à^à^Ç^Ç^àà≥≠≥àà^à^Ç]ÇÇàÇàà≠¨≥≠≥¨¨ÇàǨà1≠¨≥≠≥¨≠ààÅàÅÇÇ≠à≠à≠ààÇà^Ç^àÇà^àà≠¨≠àÇ]àÇà^àÇà^àÇÇ^˛àÇàÇàÇàÇà^à^àà≠ÇÇ^àÇàÇà^àÇà^ÇDzàD^à^àÇà^Ç^àÇàÇàÇàÇà^àÇà^ÇÇàà≠¨¨ÅáŨŨŨŨŨŨǨ]]V\V\V]V\V\V\V]V\V\V\V2˛V2˛V2˛V2˛V2˛V2˛V2˛V2˛V2˛V2˛V2˛V2˛V2˛V2˛V2˛V2˛VO2W]à^à^à]Ç^Ç]Ç]Ç]^]Ç]Ç]Ç]Ç^Ç]^]Ç]^]àà≠àà^Ç]Ç]^]ÇÇàÇàà≠¨≠à¨ÇàÅàÇàǨà≥¨≠¨¨ÅÇÅÅ]ÇÇâ˛à[≠ÇÇ^Ç]Ç^à]^]àà≠àà]^]Ç]Ç^à]Ç^à]Ç^à^Ç]Ç]ÇÇà^Ç]ÇǨààW^^à^Ç]Ç]Ç]Ç]Ç^à^à^Ç]à^Ç]Ç^Ç]Ç^Ç]Ç]Ç]à^Ç]àDz¨Çà˙Å
  2634. ¨ÅàÅàŨÅÅVV2V2˛V2˛V2˛V2˛V2V\V\V]V\V\V\V]V\V\V\V]V\V\V\V]V\V\V\V]V\V\V\V]V\V\V\V]V\V\V\V]V\V]WÇ^àÇàÇàÇà^àÇÇ^Ç^Ç^àÇà^à^à^à^Ç^à^ÇÇ≥≠≥ààÇà^à^àÇàÇàà≠≠≥¨≥¨¨ÅàǨÇP¨à≠¨◊≠≥¨≠ààÅàÅàà≥à≠à≠Çà^àÇàÇà^àÇ≠¨≠àà^Ç^àÇàÇàÇàÇàÇà^àÇà^Ç^ààâÇÇ^àà≠àà^ÇÇà^Ç^àÇàÇà˛ÇâààÇàÇà^àÇàÇàÇÇ]ÇÇà^àÇÇ^˝à)◊¨¨Å¨Å¨Å¨Å¨Å¨Å¨Å¨à¨]ÅV\V\V\V]V\V\V\V]V\V\VVV2˛V2˛V2˛V2˛V2˛V2˛V2˛V2˛V2˛V2˛V2˛V2˛V2˛V2˛V2˛VK2VV]]^^Ç]à^Ç]Ç^Ç]^]Ç]Ç^Ç]Ç^Ç]Ç^à]Ç^Ç]à¨≥àà^à]Ç^à]ÇÇàÇàà≠¨≠¨≠ÅÇÅàÅÇÅàǨ¨≥¨≠¨¨¸Ådàà≠à≠Çà]Ç^à]Ç^Ç^àà≠àà^Ç]Ç^Ç]à^à]à^Ç]Ç^à^Ç]Ç]à^Ç]ÇÇ≠àà^Ç]à^Ç]Ç^à^àÇà^àÇ≠Çà^à]Ç]à^à^Ç]^]à^Ç]Ç]ÇÇàਨ≠Çà¸Å
  2635. àÅàŨÅàŨÅÅVV2˛V2˛V2˛V2˛V2˛VVV\V\V\˛V\V\V\˛V\V\V\˛V\V\V\˛V\V\V\˛V\V\V\˛V\V\V\˛V\V\V\V]]à^Ç]à^Ç]Ç^Ç]à^Ç^àÇà^à^à^à^à^à^Ç]àà≥≠≥àà^àÇà^à^àÇàà¨à≥≠≥¨¨ÇàÅàÅàǨà≠¨◊≠≥¨¨ÅÇÅÇÅàà≠ààÇà^à^à^Ç^àà≠à≠Çà^Ç^à^Ç^à^àÇà^àÇàÇàÇà^#à^Ç]àÇàà≥àà^àÇà^à^àÇâàâà≠à≠à≠ÇàÇà^Ç^˛à^à^Ç^àÇÇ]Ç^àÇâà≠¨¨˛Å¨Å¨Å¨Å¨Å¨Å¨Å¨ÅÅV\˛V\V\V\˛V\V\V\˛V2V2V2V2V2V2V2V2V2V2V2V2V2V2V2V2V2V2V2V2V2V2V2V2V2V2V2V2V2V2V2V2VWÇ]^W^]Ç]^]Ç]^]Ç]^]à]Ç]Ç]^]Ç]Ç^Ç]^]à¨≥àà]Ç]Ç]^]Ç]àÇàÅàÇ≠¨¨ÇàÅÇÅÇC]ÇÅàǨ¨≥¨¨à¨ÅÅ]Å]àà≠ÇÇ]à^Ç]Ç]Ç^àà≠àà]Ç^à]Ç]à]Ç]Ç]Ç]Ç]Ç^à^Ç]^]Ç]Ç^àà≠˛^,àÇàÇà^ÇÇà^àÇàà≠àà]Ç]Ç]ÇÇà]Ç]Ç]àÇà]^]Ç]àÇàà¨àà˛Åá˙ŨÅàÅÅVV2V2V2V2V2V2V2V2V2V2V]V\V\V\V]V\V\V\V]V\V\V\V]V\V\V\V]V\V\V\V]V\V\V\V]V\V\V\V\V\V\V\VàÇÇ^Ç^à^àÇà^à^Ç^à^à^àÇà^àÇà^Ç^à^à^Çà◊≠≠Çà^Ç^à^àÇ≠ààÇàǨà≥¨¨Ç¨ÇàÅ àÅàǨà≠¨≥≠≥¨¨˛ÅÇŨàà^àÇàÇÇ^à^àDz≠ÇàÇàÇàÇàÇà^Ç^àÇÇ^àÇàÇàÇÇ^˛à$^àà≠ààÇàÇ≠ààÇàÇàÇâÇàÇ≠¨≠ÇàÇà^àÇàÇàÇàDzàÇà^ÇÇàÇàà≥¨≠ŨŨŨŨŨŨŨŨÅŞV]V\V\V\V]V\V\V\V]VVV2˛V2˛V2˛V2˛V2˛V2˛V2˛V2˛V2˛V2˛V2˛V2˛V2˛V2˛V42VV]V]]Ç]Ç^Ç]à^à]Ç]Ç]Ç^à]Ç]Ç]Ç^à]Ç]à]Ç]Ç]à¨≥àà^Ç]Ç]Ç]˛àNÇàÅàÅàà¨ÇàÅàÅÇÅàÅÇÅàǨ¨≥¨≠à¨ÅÅ]Å]à^à^à^Ç]Ç^Ç]àà≥àà^à^à^Ç]à^Ç]Ç^à]Ç]à]Ç^Ç]Ç^à]ÇDzà^àÇàÇà^àÇà]Ç^à^àÇ≠Çà^à^à^à]Ç^Ç]˛à
  2636. ]Ç^Ç]Ç^à^àà≠¨¨¸Åà˛Å    ¨ÅàŨÅà\V1˛V2˛V2˛V2˛V2˛VVV\˛V\˛V\˛V\˛V\˛V\˛V\˛V\˛V\˛V\˛V\˛V\˛V\˛V\V]V]V]WÇ^Ç^àÇà^à^à^à^Ç^à^à^à^Ç]Ç^à^à^Ç^à^Ç^àà≥≠≥Çà^à^à^àÇààâÇàÅàŨǨÇàÅàÇàÅàÅàŨà≠¨◊≠≥¨¨ÅÅ]àÇà^à^Ç]àÇà]àà≠¨≥àà^àÇà^Ç^à^àÇà^Ç^àÇàÇà^à^Ç]à^àÇ≠ààÇâàà^˛à ^Ç^àÇàÇàà≠Çà^˛à'^àÇà^ààâÇà^Ç^àÇÇ^àǨ¨≥àáŨÅáŨŨŨŨŨÅŸV\˛V\˛V\˛V\˛V2V2V1V2V2V2V1V2V2V2V1V2V2V2V1V2V2V2V1V2V2V2V1V2V2V2V1V2\V]W^W^]Ç]Ç]Ç]Ç]Ç]Ç^à]^]Ç]^^ÇW^]Ç]Ç]^]Ç]Ç]ÇÇ≠¨≥àà]^]à]^W]]àÇàÅÇÅàÅÇÅàÅÇÅÇÅÇÅDzÅ4àǨ¨≥¨¨àà]Ç]à^Ç^Ç]^]à]Ç^àà≠àà]^]Ç]Ç]Ç]Ç^à]^]à^à^à^Ç]Ǹ]!ÇÇà]ÇÇà^Ç^à]^]Ç^à^àÇ≠àà]^]à]Ç^Ç]Ç]˛à
  2637. ]Ç]Ç^à]^]ÇDz¨ˆÅàÅáŨVV2V2V2V1V2V2V2V1V2V2V\˛V\V\V\˛V\V\V\˛V\V\V\˛V\V\V\˛V\V\V\˛V\V\V\˛V[\V\WàÇà^à^à^à^Ç]à^à^àÇà^àÇà^àÇà^à^à^àÇà^à^à^Ç^àà≥≠≥ààÇà]Ç]]W]]Ç]àÅàÇàÅàǨÇàÅàÅàÅàÅàǨà≠¨≥¨≠DzàÇàÇàÇà^Ç^à^àà≥¨≠àà^Ç^à^Ç^¸à/^à^àÇÇ^à]Ç]Ç]Ç]Ç]àÇàÇà^àÇà^à^àÇàÇàÇ≠¨≠Çà^Ç^àÇàÇà˛Ç àÇàÇàÇà^Ç^àÇ≠¨≠ǨÅáŨÅàŨŨŨŨÅŞV\˛V\V\V\˛V\V\V\V2V2˛V2V2V2˛V2V2V2˛V2V2V2˛V2V2V2˛V2V2V2˛V2V2V2V2VV]^à^Ç^à^Ç^ÇW^]Ç]Ç^Ç]^]à^à^à]Ç^à]Ç^à]Ç]Ç]Ç]Ç]àà≥ààÇà]ÇW]W]2W3]]ÅÅÇÅÇÅàÅàÅÇÅÇÅÇÅÇÅÇÅàǨààÇà^à^Ç]Ç]àÇà]^]Ç]àà≠àà^^]Ç^ÇWÇ^àÇà^Ç]^]^W˛]W]]Dz]2Ç]à^Ç]^]Ç]Ç]Ç^à^Ç]àÇ≠àà^à]Ç^à]Ç^à]Ç]Ç]àÇà]Ç]Ç^àà≠ਯÅ
  2638. àÅáŨÅàÅ]2V2V2˛V2V2V2˛V2V2VVV\˛V\˛V\˛V\˛V\˛V\˛V\˛V\˛V\˛V\˛V\˛V\˛V\˛V8]]à^à^à^à^Ç^à^Ç]Ç^Ç^Ç^Ç^àÇÇ]à^Ç^à^Ç^àÇÇ]àÇà]àÇàà≠ÇàÇàÇÇWDz]àÇà˛ÅÇÅàÅàŨÇàÅàÅÇÅàÅàÇàÇàÇàÇà^à^Ç]˛à4ÇÇ^Ç^àà≠¨≠ÇÇ]àÇà^à^Ç^à^Ç]^W]WÇ]Ç]Ç]Ç]Ç]Ç]àÇàÇà^ÇÇà^Ç]˛à%^àÇàà≠àà^à^Ç^àÇàÇà^Ç]àÇà^àÇÇ^àਨ≥à¨Åá˛Å ¨Å¨Å¨Å¨Å¨ÅÅV\˛V\˛V\˛V\˛V\˛Vp1V2V1V2V1V2V1V2V1V2V1V2V1V2V1V2V1V2V1V2V1V2V1V2V1V2V1VV]]^]Ç]Ç^Ç]^]Ç]^]Ç]^]^]^]ÇW^]Ç]^]Ç]Ç]Ç]Ç^à]Ç]Ç]Ç^Ç]ÇÇà]Ç]Ç]˛àCÇÅ]Å]ÅÅàÅÇÅàÅÇÅÇ]Å]Ç]Ç^Ç]Ç]Ç]^]Ç]^]à]Ç]Ç]Ç^àà≠àà]Ç^à]Ç]ÇW]W]W]WW3]]Dz]5à]Ç^Ç]Ç]Ç^à^à]Ç^Ç]Ç^à]Ç]àÇ≠àà]Ç]Ç]Ç^à]Ç^Ç]Ç^à]ÇÇà]ÇÇàDz¨ˆÅá˛Å´Å]VV1V2V1V2V1V2V1V2V1V\˛V\˛V\˛V\˛V\˛V\˛V\˛V\˛V\˛V\˛V\˛V\˛V\˛VB\V]]à^Ç^àÇà^Ç^Ç^à^à^àÇà^Ç^à^à^à^à^à^àÇàÇàÇàÇàÇà^à^Ç^Ç]ÇÇ≠ààÇ≠à≠à≠àà˛ÅoàǨÇàŨÇàÇàÇàÇà^àÇà^Ç^àÇàÇà^à^à^Ç^à^àÇ≠¨≠àà^à^à]Ç]Ç]]WÇ]]WÇ]Ç]àÇàÇàÇàÇàÇà^àÇÇ^àÇÇ^àÇàÇàÇÇ^à¨≥àà^àÇàÇàÇàÇàÇàÇÇ^àDzàÇàÇ≠¨≠¨¨˛Å¨ÅáŨÅàŨŨŴ]\V\˛V\˛V\˛V\˛V\VVV2V2V1˛V2V2V1˛V2V2V1˛V2V2V1˛V2V2V1˛V2V2V1˛V2V2VV]^Ç]^]Ç]Ç]Ç]Ç^Ç]Ç^à]Ç]Ç]Ç^à^Ç^à]Ç^à^à]Ç]à^à]^]^W]W]W]]àÅàà≠à≠à≠ÇÇ]Å]ÇÅàÅÇÅà]Ç^à^à^Ç]Ç^Ç]Ç^Ç]à^à]^]Ç]Ç^Ç]àà≠àà]^W]W]3]W]W]]Ç>]^]Ç]Ç^à^Ç^à^à^Ç]Ç^ÇW^]Ç]Ç^à^à^ÇWÇÇ≠ààÇÇ]àÇà^àÇà]Ç^Ç]Ç]ÇÇàÇà]ÇDz¨ÅÅĘÅ
  2639. àÅ´ÅÅVV2V2V2V1˛V2V2V1˛VVV\˛V\˛V\˛V\˛V\˛V\˛V\˛V\˛V\˛V\˛V\˛V\˛V\˛V0Å]à^Ç^Ç^à^à^àÇà^Ç^Ç^Ç^Ç^Ç^à^à^Ç^à^ÇÇàÇà^à^à^à^^]]˛W;]W]]àǨà≥¨≠à≠àÇ]ÅÅàÅàÇà^à^àÇàÇà^à^Ç^à^Ç]àÇà^à^Ç^àÇÇ^àÇ≠¨≥ÇÇW˛]0W]W]]Ç]Ç]à^Ç]àÇÇ^à^àÇàÇÇ]à^à^Ç^Ç^à^Ç^àÇà^ÇÇ≠¨≥àà]˛à ÇàÇàÇà^Ç^à^Ç^˛àÇàÇàà≥¨¨¸Å´˛Å¨ÅàŨÅÅ\\˛V\˛V\˛V\˛V\˛V1V2V1V2V1V2V1V2V1V2V1V2V1V2V1V2V1V2V1V2V1V2V1V2V1V2V1VWÇ]Ç^à]Ç^à]Ç^à^Ç]^]^]Ç]^]^]Ç]Ç]Ç]Ç]Ç^Ç]Ç]^]^^à]]3]2]W]]ÇÇàÅàǨà≠à≠ÇÅ]Å]àÅà#]Ç^Ç]Ç^à]Ç]Ç]^]Ç]Ç]Ç]Ç]Ç]Ç^à]Ç]ÇÇ≠àà˛WI]W]]^]Ç]Ç]Ç]Ç]Ç^à]Ç]Ç]Ç^Ç]Ç]Ç]Ç]Ç]Ç]Ç]Ç]à]àÇ≠à≠àà^Ç^à^àÇàÇàÇà]Ç]Ç]Ç^à]Ç]Ç]˛¨ÅÅÄÙÅVV2V1V2V1V2V1V2V1V2V1V\˛V\˛V\˛V\˛V\˛V\˛V\˛V\˛V\˛V\˛V\˛V\˛V\¸VÅ]àÇàÇàÇà^à^à^àÇà^à^à^à^Ç^à^Ç^à^Ç^à^Ç^àÇà^Ç^ÇÇ≠ÇÇ]à]ÇÇ≠à≠à¨Å¨à≥≠≥à≠àÇ]àà≠ÇàÇà^àÇà^à^Ç^à^Ç^àÇà^à^Ç^à^Ç^à^^]¨¨≠ÇÇ]^]àÇà^àà≠ààÇÇ^àÇ%àÇàÇÇ^àÇàÇàÇà^àÇà^à^Ç^àÇà^àà≠¨≥¨≠ààÇàDzàÇ≠ààÇàÇà^àÇà^àÇà^àà≥¨¨˛Åá˛Å¨ÅáŨÅá\]˛V\˛V\˛V\˛V\˛V\Vr2V1V2V1V2V1V2V1V2V1V2V1V2V1V2V1V2V1V2V1V2V1V2V1V2V1V1VW^]Ç]Ç]Ç]^]Ç]Ç^Ç]^]Ç]Ç]^]^]Ç]Ç^Ç]Ç]Ç]^^Ç]^]^WÇÇàÅàÇàÇàà≠ààÇàDz¨$ÇàÇà]Ç^≠àà]à^Ç]Ç]^]Ç]à^à]^]à]Ç^à]Ç]ÇW˛]RW]]¨àà]^]Ç^à^ÇǨààÇà^Ç^à]^]Ç]à^Ç]à^Ç]Ç^àÇàÇÇ]Ç^à]Çà≠à¨ÇàÇàÇà]ÇÇà]ÇÇàÇà^à^Ç^à]Ç^Ç]^]˛¨ÅÅĘÅáÅÅVV1V2V1V2V1V2V1V2V1V2VÛV2˙V2˙V2˙V2˙V2˙V2˙V2˝V;Å]Ç^Ç^Ç]Ç^Ç^à^Ç^à^Ç^à^Ç]Ç^Ç^à^à^à^à^à^Ç]Ç]^W]WÇÇ≠¨≠à≥≠≠à≠ààDz≠Çà^à^à^àà≥àÇ^à^Ç]Ç^Ç]àÇà^à^Ç^à^à]Ç]à]ÇW]W]WÇÇ≠àà^àÇàÇà^àà≠à≠àà^à^Ç^Ç^àÇà^àÇà^àÇàÇâàà^àÇà^àÇ≠¨≠ÇÇ^àÇàÇà^àÇàÇàÇ≠ÇÇ^àÇàÇàÇà^à^Çà≥¨¨¯Åá˛ÅáÅÅ˝V2˙V2˙V2[1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V]^W^]^]Ç]Ç]Ç^à]Ç^à]Ç]Ç]^]Ç]Ç^Ç]^]Ç]Ç]Dz]9^W]W]WÇÇ≠¨≠¨≠Çà^à]Çà≠àà]Ç]Ç^Ç]à¨à]^]^]^]Ç]^]à]Ç^Ç]^W^W]W]W˛]DW]W^]Ç^Ç]Ç]Ç]à]Ç]àà¨à¨ÇÇ]Ç]à]Ç]Ç]Ç^à]Ç^à]àÇÇ]ÇÇà]^Ǩà¨àà]^]Ç]à^Ç]ÇÇà^˛à]Ç]Ç^à^Ç]à^Ç]à¨≥ÇÅÄÅĈÅVV1V1V1V1V1V1V1V1V1V1V\˛V\˛V\˛V\˛V\˛V\˛V\˛V\˛V\˛V\˛V\˛V\˛V\¸VÅ]Ç^Ç^à^à^àÇà^à^àÇâÇà^à^Ç^àÇà^Ç]^]àÇà]Ç]Ç]Ç]^]àÇ≠¨◊≥◊≠≠Çà^àÇ≠¨≥ÇÇ^àÇà^àà≥àà^Ç^à^àÇà^Ç^à^à]Ç]]WÇ]]WÇ]à]Ç]Ç^à^à^à^Ç^àÇà^àà≠à≥¨à^à^à^àÇÇ^àÇà^à^à^àÇà^¸à^≠¨≠àà^Ç^Ç^àÇàÇàÇàà≠à≠Çà^àÇ˛à    ^àÇàÇàà≥¨¨˛Åá˛Åá˛Å¨ÅáÅŞV\˛V\˛V\˛V\˛V\V\2V1V1V1V2V1V1V1V2V1V1V1V2V1V1V1V2V1V1V1V2V1V1V1V2V1V1VWÇ^Ç]Ç]Ç]Ç^Ç]^]Ç]Ç^à]Ç]Ç]Ç^Ç]Ç]^W]W^W]W˝]^WÇÇàà≠¨≥¨≥àà]^^àÇ≠àà]^]Ç]Ç^≠¨à]Ç]^]Ç]Ç^Ç]^]^W]W]3]W]W]]Ç]Ç]Ç]Ç]^]àÇà]^^à^àǨà¨à≠^^]Ç]Ç]Ç]^]à]Ç^Ç]Ç]Ç]Ç^à^à^àà≠ÇÇ]Ç]Ç]Ç^Ç]àÇà]àà≠àà]Ç]àÇÇ]Ç]Ç]Çà¨à≠¨áÄÙÅVV1V2V1V1V1V2V1V1V1V2VV2˛V2˛V2˛V2˛V2˛V2˛V2˛V2˛V2˛V2˛V2˛V2˛V2˝VÇÇàÇàÇÇ^à^Ç]Ç^Ç^à^à]Ç]Ç]àÇÇ]à^Ç]^W]]ÇW^]àÇàÇàà≠à≠à≥≠◊≠≠ÇÇ^àÇ≠≠≥Çà^Ç]à^àà≥àà^Ç^à^à]Ç]^W]W]W]]Ç]Ç]à^Ç^àÇà^à^Ç]àÇà^Ç^à^àÇàà≠à≠àà^Ç^àÇÇ]Ç^Ç^à^à^à^à^˛à^àÇàà≠àà]àÇà^àÇà]ÇÇàÇàÇ≠ààÇÇ^˛à ^à^à^àÇàÇ≠¨¨ÙŨÅÅ2˛V2˛V2˛V2˛V2˛V261V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V+V]˛à
  2640. Çà]Ç]Ç]^]^]Ç]Ç˝]W^]à]^]Ç˝]4W]]Ç]àÇàà≠à≠à≠à≠à≠à≠ÇÇ]^]àà≥àà]à]^]Ç]à¨≠]^]Ç]^]]W]W]2˛]<W^]Ç]Ç^à]Ç^à]Ç]Ç]Ç]Ç]Ç]Ç]Ç]Ç]àà¨à≠ÇÇ]ÇÇà]^]Ç]Ç]Ç]à^Ç]ÇÇà^Ç]Ç^˛à]^^à]Ç^à]^]Ç]à^˛à]Ç]àÇà]Ç]à]à^ÇWÇÇ≠à˛ÅVÅÄÅ\˙ÅVV1V1V1V1V1V1V1V1V1V1V˲V2˙V2˙V2˙V2˙V2˙V2˙VQ1VVàà≥à¨à≠Çà^à^Ç^à^Ç]Ç]Ç]Ç^à]Ç]Ç]à]Ç]àÇàÇ≠à≠à≥≠≥à≥≠≠à≠à≠¨≠Çà^àÇ≠≠≥àÇ^à^à^àà≥àà]^]Ç˝]W]W^]à]Ç^à^àÇàÇà^àDzàD^àÇÇ]àÇÇ^à^Ç^àà¨à≥¨à^àÇàÇàÇÇ^àÇà^àÇà^àÇàÇà^ÇÇâà≠àà^àÇàÇàÇàÇà^àà¨à≥àà^˛à
  2641. ÇàÇàÇàÇà^ÇǨ¨≠ÒÅ˚V2˙V2˚Va1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1]Å≠à≠à¨ààÇàÇà^Ç]^W^]Ç]Ç]Ç]]W^]Ç]Ç]ÇÇ≠à≠à≠à≠à≠˛à≠Çà^àÇ≠àà]Ç^àà≠¨à]^]Ç]Ç^≠¨à]]W]W]W]W]W^]Ç]Ç^Ç]Ç^à]Ç]Ç]ÇÇà]Ç^Ç]^^à]Ç]Ç]àÇàǨ¨≠ÇÇ^à]Ç^à]Ç^à]^]Ç]Ç^Ç]Ç]Ç]àÇàà≠ÇÇ]Ç^à^Ç^à^àǨà≠àà^à^
  2642. à]Ç]Ç]Ç^à]Ç]àDz¨ÅÅVÅV˛ÅĸÅVV1V1V1V1V1V1V1V1V1V1VV1˛V1˛V1˛V1˛V1˛V1˛V1˛V1˛V1˛V1˛V1˛V1˛V 1V2VVàà≠à≠¨≠à≠ààÇ≠Çà^àÇà^ààâÇà]Ç^˝à≠à≠à≠à≠à≥à≠à≠àà^àÇà^≠¨≠Çà^ÇDz≠Çà^Ç]à^àà◊Ç]W]]^]Ç]^]Ç^Ç]Ç^Ç]Ç^à^à^Ç]à^Ç^àÇà]ÇÇà^à^à^àÇàÇ≠¨≥àâÇà^à^Ç^àÇàÇà^Ç^à^Ç]Ç^Ç]àÇà^≠≠à^à^Ç^àÇÇ^≠à≥¨≥¨àÇàÇàÇà^Ç^à^àÇà^ÇÇ≠¨¨ÅáÅÅÄˆÅ˝V1˛V1˛V1˛V1˛V1@+V1V1V1V+V1V1V1V+V1V1V1V+V1V1V1V+V1V1V1V+V1V1V1V+V1V+VVÅŨà≠à¨à¨Ç˛à^àÇàÇàÇ≠ààÇà]àà≠à≠à≠à≠à≠˝àÇàÇà]^]Ç]Çà≠àÇ]^]ÇÇ≥àà]ÇW^]Ç]à¨à3]]Ç]^]Ç]^]Ç]^]Ç]^]Ç]^]Ç]^]Ç]Ç^à]^]à]à^à^àÇàÇàà≠à≠Çà]Ç]^W^]à]Ç]^]Ç^à]^WÇ]Ç]Ç]ÇÇ≠ÇàÇà]Ç]ÇWÇà≥¨≥àà ]Ç^à]à^Ç]Ç]Ç]Ç^Ç]àà¨à¨ÅÅVÅÄÅVÅÄÅV˛ÅVV1V+V1V1V1V+V1V1V1V+VÎ˙V2˙V2˙V2˙V2˙V2˙V2˘V Åà≠¨≠¨≠à≥à≠à≠˛à[≠à≠à≠à≠à≠à≠à≠à≠à≥à≠à≠àà^àÇàÇà^Ç^àÇ≠¨≠Ç^]àÇ≠≠≥àà^Ç^Ç^àà≠àà^Ç^à^à^àÇà^ÇÇà^Ç^Ç^à^à^àÇà^àÇàÇà^Ç^˛àÇ≠à≠à≥¨≠à≥≠à^àÇà]Ç^à^à^Ç]˛à Çà^Ç^àÇà]Ç^àà≥≠≥ààÇà]ÇÇ≠≠◊≠≠ààÇà^˛à^àÇà^àÇàÇàà≠¨≠¨àÄÙÅVV1˙V2˙V2VV1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V+VVÅ]àà≠à¨à≠à¨à¨Çàà≠àâà≠à≠à≠à≠à≠ÇàÇà^Ç^à]Ç]Ç]Ç^à]Ç]ÇÇ≠àà]^^àÇ≠¨à]Ç]Ç]Ç]à^à%^Ç]Ç^à]Ç^Ç]^]à^à]^]Ç]Ç]Ç]Ç]Ç]à]Ç^àÇààâ˛àU≠à≠¨≥à≠à≠^Ç]Ç]Ç]Ç]Ç]Ç]^^à^à]Ç]Ç^à]^]Ç]àà≠à≠àà]^]àÇ≠àà^à^à]Ç]à^àÇà]ÇǨÇàÇàÇàà¨ÅÅVÅVÅÄÅV¸Å\Å1V1V1V1V1V1V1V1V1V1VV1˛V1˛V1˛V1˛V1˛V1˛V1˛V1˛V1˛V1˛V1˛V1˛V1˛V1˛V1]Ũà≥¨≠à≠à≠à≠à≠à≠à≠à≠à≠à≥à≠àâÇà]Ç^à^à^à^Ç^à^àÇÇ]â¨≠ÇÇ^à^â≠≥ààÇà^à^Ç^Ç^Ç]Ç]Ç^à^Ç]Ç^à^àÇà]àÇÇ]Ç^Ç^à^Ç^àÇàà≥≠≠à≥¨≠à≥¨≠à≠ààÇà^^]àÇà,^à^Ç^à^à^à^Ç^àÇàÇà^Ç^àÇàÇ≠à≠Çà^à^≠àà^àÇàÇà^Ç^˛àÇàÇàà◊¨¨à¨à¨à¨ÄÅz˛ÅÄ˝ÅáÅÅV\2V1˛V1˛V1˛V1˛V1O1V1V+V1V1V1V+V1V1V1V+V1V1V1V+V1V1V1V+V1V1V1V+V1V1V1V+V1V+V1VVÅà≠ààÇàÇàà≠à≠¨≠à≠à≠˛à≠ÇÇ^à]^W^]Ç]^]^]^WÇ^à]^Ç≠ÇÇ]^]ÇÇ≥àà]Ç]Ç^^]^]^]^]^]Ç]Ç]Ç^à]^]Ç]^]à]^]Ç]ÇÇàÇàà≠à≠à≥à≠¨≠à≠ààÇÇ]Ç]Ç]ÇW^]à]Ç]Ç]Ç^Ç]Ç]ÇWÇÇà]Ç]^WÇ]Ç]àÇ-≠àà^Ç]àǨÇ^]Ç^à^à]Ç]Ç^à^Ç]à¨≥à¨ÇàÇàÅÅVÅVÅVÅVÅV˛ÅVÄVV+V1V+V1V1V1V+V1V1V˛V1˛V2˛V1˛V2˛V1˛V2˛V1˛V2˛V1˛V2˛V1˛V2˛V1˛V1˛V1\]àà≠Çà^àà≠à≥¨≥¨≥≠≠à≠à≠ààÇà^à^Ç]àÇÇ^à^à]Ç^àÇà^àà≠Çà^àÇ≠≠≥ÇÇ]àÇÇ^à^Ç]Ç^à^àÇà^àÇàÇà^^]à^àÇà^àÇâà≠à≠¨≠à≠à≠≠≥≠≥à≠ààÇà^^]Ç^Ç^à^àÇàÇà@^àÇàÇà^Ç^ÇÇàÇà^Ç]à^Ç^àÇàà≥àà^àǨà≠ÇÇ^àÇàÇàÇÇ^àÇà^àà≥≠◊¨≠à≥à¨ÅÅÄÅĘÅ\1˛V1˛V2˛V1˛V2VVP1V+V1V1V1V+V1V1V1V+V1V1V1V+V1V1V1V+V1V1V1V+V1V1V1V+V1V1V1V2VV]]Ç^Ç]^^à^àÇ≠ààÇà^Ç^˛àEÇÇ]^^à]^]Ç]^^à^Ç]^]à^ÇÇ≠Çà]^]ÇÇ≠¨àW^^à]^]ÇW^]Ç]Ç]Ç]Ç]Ç]Ç^ÇW^]àÇàÇàà≠à≠˝à4Çà^àà≥≠≠àà]Ç]Ç]Ç]^]^WÇ^à]Ç^à]Ç]Ç]Ç^à]^]àÇà]Ç]Ç^Ç]^]ÇDzà,]Ç]Ç^àÇÇ]ÇÇà]Ç^Ç]Ç]Ç]ÇÇ≠¨≥¨≥¨≠¨≠ÇÅÄÅVÅÄÅVÅÄÅV˛ÅVV1V+V1V1V1V+V1V1V1VV1V1V1˛V1V1V1˛V1V1V1˛V1V1V1˛V1V1V1˛V1V1V1˛V1V1V1˝V]]Ç]Ç^Ç]Ç^Ç^à^ÇÇàÇà^à^àÇ≠àà^Ç^Ç^à^Ç^Ç^àÇàÇÇ]ÇÇà]≠¨âÇà^Ç^≠≠≥ÇÇ]Ç^à^Ç]Ç^Ç]Ç^à^à^Ç]Ç^à^àÇàà≠à≠à≠à≠àâÇàÇà^Ç^≠≠≥¨â^Ç]Ç^Ç]à^Ç]Ç^à^àÇà^Cà^Ç]Ç^à^à^Ç^à^Ç^àÇàÇàÇÇ^àà≠ÇàÇÇ]àÇÇ]àÇàÇà^à^à^Ç]Ç^àà≥≠≥¨◊≠≥¨≥¨ÅVÅÄÅIJÅIJÅÄÄ1V1V1V1˛V1V1V1˛V1+V1V+V1V+V1V+V1V+V1V+V1V+V1V+V1V+V1V+V1V+V1V+V1V+V1V+V1VV]]à]^]^W^]^]Ç]^W^]Ç]Ç]Ç]àà¨Çà]^W^]Ç]Ç]^]Ç]à]^]à]^Ç≠ÇÇ]^]ÇÇ≠àà]^]Ç]^]Ç^ÇW^]Ç]Ç]Ç]^]^]àà≠à≠ààÇàÇÇ]^]Ç]Ç]^W^Ç≠¨≠àà]^]Ç]^]à]^]^]Ç]Ç]Ç^Ç]^]Ç]^]à]Ç]^]ÇÇàÇàÇàÇàÇà^à^à]Ç]à]^]à]Ç]à]Ç]Ç]Ç]Ç]à¨≥¨≠¨≥¨≠¨≠ÅÅVÅVÅVÅVÅVÅVÅVV+V1V+V1V+V1V+V1V+V˛V1˛V1˛V1˛V1˛V1˛V1˛V1˛V1˛V1˛V1˛V1˛V1˛VH1V1VVÅ^à^à^Ç^àÇÇ^à^Ç^à^à^à^Ç^âà≠à≠Çà]Ç^Ç^à^Ç^àÇàÇà^Ç^à^≠¨≠ÇÇ^àÇ≠≠≥àà^àÇà^˛à^Ç^Ç^à^Ç]à^Ç^àà≥¨≠ààDzà^Ç^^]à^à^Ç^àà≥≠≠˝àT^Ç^Ç^àÇà^Ç^Ç^àÇà^à^Ç^àÇàÇà^Ç]àÇàà≠ÇàÇ≠àà^à^à^àÇà^àÇàÇàÇàÇà^àÇàÇà^àà≠¨◊≠≥≠◊≠≥¨¨ÅÅzÅÄÅIJÅÄÅÅÄ1˛V1˛V1˛V1˛V1VV1V1V1V+V1V1V1V+V1V1V1V+V1V1V1V+V1V1V1V+V1V1V1V+V1V1V1V+VVÇ^^]Ç]Ç^à]^^ÇW^^Ç]à^Ç]ÇÇâààÇà]^]Ç]^]à]Ç^Ç]Ç^à]^]ÇÇ≠àà]^^àÇ≠¨à]Ç^à^Ç^à^à]Ç]Ç]ÇW^]Ç]ÇÇ≠àà^à]^]à]Ç]^W^]Ç]Ç]Ç]àà≥ààÇà]Ç]^]^]Ç]Ç]Ç]Ç]Ç]Ç]Ç]Ç^à]Ç]Ç]Ç]ÇÇ≠àÇ]ÇÇà^Ç]Ç]^]à]^]à^Ç]Ç^Ç]Ç]àÇà]Ç]àà≠¨≥¨≥¨≥¨≠¨¨ÄÄVÅVÅÄÅVÅÄÅVV1V1V1V+V1V1V1V+V1VV1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1VV]]à^Ç^à^à^Ç^à^Ç^Ç^Ç^Ç^Ç^àà≠àà^Ç^à^Ç^Ç^à^à^Ç^à^à^Ç^≠¨â^à^Ç^≠≠≥Çà^à^à^à^à^eà^à^Ç]Ç^^]ÇÇàà≠ÇÇ]Ç]Ç^àÇÇ]Ç^Ç]Ç^Ç]àÇ≠¨≥àà^à^Ç]Ç^Ç]Ç^Ç]à^Ç]Ç^Ç^àÇà^àÇà^à^Ç]à¨≠^Ç^àÇàÇà^à^àÇà]Ç^àÇà^àÇàDzàÇà˛Ç≠¨≥¨≥¨≥¨◊≠≥¨¨ÄÅVÅÄÅIJÅÄÅVV1V1V1V1V1V1V1V1V1+V1V+V1V+V1V+V1V+V1V+V1V+V1V+V1V+V1V+V1V+V1V+V1V+V1V+U+VW^^Ç]Ç^à]^]Ç]^]Ç]^]^]^]Ç^àà≠ÇÇ]à]^]Ç]Ç]Ç]^]Ç]Ç]Ç]^Ç≠ÇÇ]^WÇÇ≥àÇ]Ç]Ç^Ç]Ç]àn^Ç]^W^]ÇW^]ÇǨàÇ]^]Ç]Ç]à]Ç]Ç]^WÇ]^]ÇÇ≠¨≠]^]ÇW^]^]^]^W^]Ç]Ç]Ç]Ç^à]Ç^à]Ç]ÇW^^≠ÇÇ]Ç]Ç^à]Ç]Ç]à^Ç]Ç^à]Ç^àÇàÇà]à^Ç]ÇÇ˝¨&≠¨≠¨≥¨¨ÅÅVÄVÅVÅVÅVÅVV+V1V+V1V+V1V+V1V+VV1V1˛V1V1V1˛V1V1V1˛V1V1V1˛V1V1V1˛V1V1V1˛V1V1V1V1VVÅ^Ç^à^à^Ç^Ç^à^Ç^à˛^<Ç^Ç^âà≥à≠ÇÇ^à^Ç^à^à^àÇà^Ç^Ç^Ç^≠¨≠ÇÇ]Ç^≠¨≥Çà^àÇà^àÇàà≠àà]Ç^Ç^à˛^â¨≠˛ÇQà^àÇÇ]à^Ç^à^Ç^à^Ç^àà≥àà^à]Ç^Ç]Ç^Ç^Ç^Ç^àÇà^àÇàÇà^àÇàÇà^Ç^àà≠Çà^à^à^àÇà^ÇÇà^àÇàÇà^Ç^˛à^àÇÇ]àà≠¨≥¨≠¨◊≠◊≠◊¨≠ÅÅzÅÄÅÄÅIJÅVV1V1˛V1V1V1˛V1V11V+V1V+V1V+V1V+V1V+V1V+V1V+V1V+V1V+V1V+V1V+V1V+V1V+V1V+V]Ç]Ç]^]Ç]^]^]Ç]Ç^^]Ç]^]Çà≠à≠ÇÇ]^]^]^]Ç]Ç^à]^]^]^]ÇÇ≠àà]^]ÇÇ≠àà]^^à^à^à]ààà^Ç]^]Ç]ÇWÇÇ≠àà]Ç]Ç^ÇW^]Ç]Ç]Ç]Ç]Ç]^]àà≠Çà]Ç]Ç]^]Ç]Ç]Ç]Ç]Ç]^]Ç]Ç]Ç]àÇà]Ç]^]¨àà]^]Ç]^]Ç]^]Ç]Ç^à^à]ÇWÇÇà]Ç^ÇW^]àਨ≠ਨ≥¨≥¨≥¨¨ÅÅVÄVÅVÅzÅVV1V+V1V+V1V+V1V+V1ViV1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1VVÇ]à^Ç]Ç^Ç]Ç^Ç^à^Ç^à^Ç]Ç^àà≥àà]Ç^Ç]Ç^Ç]Ç^à^Ç^Ç]Ç^^]˛≠^à^àÇ≠≠≥^Ç]ÇÇàÇà]àDzà"^^]Ç^Ç]Ç^àà≥Ç^]Ç^à^Ç]Ç^à^Ç]ÇÇà^Ç]^Dz≠IÇà^à^à]Ç]Ç]à^Ç^Ç]Ç]Ç]à^Ç^àÇàÇàÇà]àà≠ÇÇ]Ç^à^Ç]à^à^à^à^àÇÇ]ÇÇà^àÇà^Ç]ÇÇ≠¨≠¨≠˛¨#◊≠≥¨≥¨¨ÅÅVÅVÅÄÅÄÅVV1V1V1V1V1V1V1V1V1P+U+V+V1V+U+V+V1V+U+V+V1V+U+V+V1V+U+V+V1V+U+V+V1V+U+V+U+\]^]^]^]^]Ç]Ç]Ç]^]Ç^Ç]^]ÇDzà^^]^]^]^]^]Ç]^]Ç]^]^]^à≥ÇÇ]Ç]àÇ≠àÇ]^W^^à]^]àÇà^ÇW^]^]^]Ç]¨ààW^]^]Ç]^W^]ÇW^]à]Ç]^WÇà≥àà]^]Ç]^]Ç]^]Ç]Ç]^]Ç]Ç^à]Ç^à^àà¨ÇÇ^¨ÇÇ]Ç]Ç^ÇEW^]Ç]Ç]^]Ç^à]^WÇ]Ç^à^Ç]^]ÇǨà¨à¨Å¨à≥¨≠¨≠àÅVÄVÄVÅVÅVV+1+V+V1V+U+V+V1V+UGVUV1V1V1VUV1V1V1VUV1V1V1VUV1V1V1VUV1V1V1VUV1V1V1VUV1V1VVÇ^^]Ç^Ç^àÇà^à^Ç]˛à^Dz^âà≠àà^Ç^àÇà^Ç^à^à^à^à^Ç^à^˛≠[ÇÇ]àà≠≠≥ÇÇ^Ç^à^à^àÇ≠àà^Ç]Ç]Ç^Ç^àà≥Çà^Ç]Ç^à^Ç^Ç]Ç^Ç^à^Ç^Ç^≠≠◊àÇ]àÇà]àÇà]àÇÇ^à^ÇÇàÇàÇâàà^àà≥¨≠˛àM≠Çà^àÇà^à^à^à^Ç]àÇàÇàÇÇ^àÇàà≠àà^ÇÇàà≥¨≠¨¨Å¨¨◊≠≥≠◊àÅVÅÄÅÄÅÄÅVV1V1V1V1VUV1V1V1VU1V+V1V+V1V+V1V+V1V+V1V+V1V+V1V+V1V+V1V+V1V+V1V+V1V+V1V+V]Ç]^]Ç]^^Ç]^]Ç]^]Ç]^]ÇW^Ç≠àà^Ç]^^à]Ç]Ç]Ç^à]Ç]à]à]ÇÇ≠ààW^^àÇ≠àà]Ç]Ç]Ç]Ç]à6àà^Ç]^W^]^]Ç^≠àà]Ç]^WÇ]Ç]^]Ç]Ç]Ç]Ç]Ç]àÇ≠¨≠^Ç^à]^]à]Ç^à]˛à9^Ç^à]Ç^à]Ç]à¨≠ààÇ≠àà]Ç]Ç]à^à^Ç]à]Ç^à]Ç^Ç]Ç^Ç]ÇÇà^Ç]ÇǨ¨≠¨¨˛Å"¨¨≥¨≥¨¨ÅÅVÄVÄVÅVV1V+V1V+V1V+V1V+V1ViV1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1VVÇ^à^Ç]Ç^Ç^à^^]à^Ç]Ç^à^Ç^àà≥àà]Ç^Ç^à^Ç]à^à^à^Ç^àÇÇ^˛≠^Ç]à^˛≠^^Ç^Ç]à^Ç]àà≠àà^Ç]Ç]Ç]Ç^àà≥Ç^]Ç]Ç]à^Ç]à^à^à^Ç]Ç^àÇàà≥¨≠Çà^à^Ç]à^à^àà≠ààÇÇ]à^Ç]à^ÇÇ≥¨¨Çàà≠Çà^à^àDzàBÇà^àÇà^à^à^ÇÇà^Ç^à^àÇàÇ≠à≠¨≥¨¨zÅà≥≠◊≠≥¨¨ÅÄVÅzÅVÅVV1V1V1V1V1V1V1V1V1+U+V+U+V+U+V+U+V+U+V+U+V+U+V+U+V+U+V+U+V+U+V+U+V+U+V+1+VW^]Ç]^]Ç]^]ÇW^^Ç]^]Ç]Ç]ÇÇ≠àà]^]^]^]^W^]Ç]^]^]Ç]Ç]àà≠Ç^]^]ÇÇ≠àÇW^]^]^]^]àÇà^Ç]Ç]^]^]ÇÇ≠¨ÇW]]Ç]^]à]^]^]Ç]Ç]^]Ç]à]àà≠àà]^]^]^]Ç]^]àà¨Çà]^]Ç]^]Ç]à¨≠àà^àÇà^Ç]Ç]à]à^à]Ç^à]^]Ç]Ç]Ç]^]à^à^Ç]àǨਨ≠ÅÄVÅà≥¨≥¨≠¨áVÄVÄVÄVÄ11+V+U+V+U+V+U+V+UV1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1VVÇ^Ç^à^Ç^à^Ç^à^à^à^Ç^à^à^≠¨≠àà^Ç^Ç^Ç]Ç^Ç^Ç^Ç]à^à^àà≠¨à^Ç]àÇ≠¨≥Ç^WÇ^^]Ç^ÇÇ'≠àà^àÇÇ]à^Ç^≠≠≥Ç^]Ç^à^à^à^Ç]Ç^à^Ç^Ç^à^ÇDz≠)Çà^à^à^Ç]à^àÇ≠¨≠Çà^Ç^Ç^à^àà≥¨≥ààÇ≠àà^à^Ç^à˛ÇàÇà^à^àÇà^Ç^à^àÇàÇà^àÇàà≥¨≥¨¨˛Ä!¨¨≥≠◊≠≥àÅÄÄVÅÄÅVV1V1V1V1V1V1V1V1V1+V+U+V+V+V+U+V+V+V+U+V+V+V+U+V+V+V+U+V+V+V+U+V+V+V+U+U+W]^W^]^]Ç]Ç]^^à]Ç]Ç]^]à]ÇÇ≠àà^Ç]^]Ç]Ç]^]^]Ç]Ç^Ç]Ç]ÇÇ≠ÇÇ]^]àÇ≠¨àW^]ÇW^]Ç]ààà^Ç]Ç]^]à]ÇÇ≥¨à]^]^]Ç]Ç]Ç]^]Ç]^]Ç]^]^]ÇÇ≠àà^à]à]Ç]à^à]àà≠Çà^Ç]ÇW^]^]àà≥¨à]àÇà]^]^WÇ^Ç]ÇÇà]Ç]Ç^à^Ç]Ç^Ç]à^Ç]Ç]Ç]à¨≠¨≠ÇÅVÄŨ¨≥¨≥¨¨ÅÅVzVÄVÄUV+U+V+V+V+U+V+V+VV1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V+VV^^Ç^^]Ç^Ç^Ç^à^à^Ç^Ç^ÇÇà^àÇ≠àÇ]Ç^Ç^à^Ç]Ç^^]à^Ç^à^Ç]≠¨à^Ç]ÇÇ≠≠≥ÇÇ]^]Ç^Ç]ÇÇ]ààâÇà^àÇà^àÇâ¨◊Ç^]Ç]Ç]Ç^Ç]à]^]Ç^à]Ç]^WàÇàà≥àà^àÇÇ]àÇàÇàà≠à≠Çà]à^^]à^ÇÇ≥≠≠ààÇàÇà^Ç]àÇà]ÇÇàÇà^Ç^˛à8^àÇà^àÇà^à^à^àà≠¨≥¨¨ÅÅzÅÅ≠≠≥¨≥≠¨ÅÅVÄVÅVV1V1V1V1V1V1V1V1V1P+1+V+U+V+1+V+U+V+1+V+U+V+1+V+U+V+1+V+U+V+1+V+U+V+1+V+1+]]^]^]^]^]^]^]Ç^à]^]Ç^àÇà]˛à,W^]Ç]^]Ç]^]ÇW^]^]^]^]Çà≠ÇÇ]^]ÇÇ≥àÇ]^]^]Ç]^]ÇDzà$^àÇà^àÇàÇ≠¨à]^]^W^]ÇW^]^W^]à]Ç]^W^]à]˛àm^Ç]Ç]^]à^à^àà≠àà]^]Ç]^]à]àà≠Çà^Ç]^]Ç]Ç^à]Ç^à]Ç]Ç]Ç^à]Ç]Ç]Ç]Ç]à^Ç]Ç]àਨ≠ÅÅVÄVÅÅ≠¨≠¨≥àÅVÄVzVÄUV+V+U+V+1+V+U+V+1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1VWà^Ç^à^Ç]Ç^Ç^àÇàÇâÇàÇâàâÇâà≠ÇÇ^Ç^àÇÇ]Ç^à^Ç^à^Ç]^]àÇ≠¨≠Çà^àÇâ≠≥ÇÇ]à^à^à^ÇÇ7≠àâàâà≠à≠à≠à≠à≠Çà]^]Ç^Ç]Ç^Ç]à^Ç^àÇà^àÇàÇâà≠àâÇàÇà^àÇâàâà˛≠ÇÇ^Ç^Ç^àDzà ÇàÇà^Ç]Ç^à^à^àÇàÇà^Ç^àÇàÇàÇà^à^Ç^˛à.^à^àÇ≥¨≥¨¨ÅÅVÄÄÅà◊≥≥¨≥¨¨VÄzÅVÄVV1V1V1V1V1V1V1V1+V+U+V+U+V+U+V+U+V+U+V+U+V+U+V+U+V+U+V+U+V+U+V+U+V+U+V+]^Ç]^^à]^]^]Ç^à^àÇà^àÇàÇàà≠àà]^]^^à]^]Ç]Ç]Ç]Ç]^3^]Çà≠àà^ÇÇàÇ≠àà]^]Ç]Ç]à^àÇâÇààâÇàà≠ààÇàÇà]^W^]^]^]^]Ç^à]Ç^à^ÇÇàÇàÇâààÇàÇàÇÇ^àÇàÇàÇ≠ÇÇ]Ç]Ç]Ç]Ç]Ç]Ç]Ç]Ç]^]Ç]Ç]Ç^à]Ç]Ç]Ç]à]ÇÇà]à^Ç]^^à]Ç]Ç]àà≠¨≠àÅVzVÄVŨ≥¨≠¨≥ÅÅVÄVÄVV+U+V+U+V+U+V+U+VMV1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V+V]à^Ç^à^àÇà^àÇàÇâàâà≠ààÇ˝à≠ÇÇ]à^Ç^Ç]^]Ç]^^àÇÇW^^Ç]≠¨≥àà^à^à¨≠^Ç]^]àÇàà≠à≠à≠àâààÇàÇàÇà^àÇÇ]Ç]^]Ç^Ç]ÇÇàÇâààÇààâà≠à≠à≥ààÇâàâà≠ààÇàÇàà≠ÇÇ]àÇà^à^Ç]à^Ç]àÇà]Ç^Ç]Ç^Ç]Ç^Ç^àÇÇ]àÇàDzà4^Ç^àÇà^Ç]ÇÇ≠¨≥¨¨ÅÅVÄVÅŨ¨◊≠≥¨≥ÅÅVÄVÄUV1V1V1V1V1V1V1V1P+U+V+1+U+U+V+1+U+U+V+1+U+U+V+1+U+U+V+1+U+U+V+1+U+U+V+11]^Ç]Ç]Ç^à^àÇàÇàÇàÇàÇà]^]à^˛à(W^]^W^]^W^]^W^^ÇW^]à]ÇÇ≠àà^àÇàÇ≠àà]Ç]ÇÇàDzà#ÇàÇà^à]Ç]Ç]Ç]Ç^Ç]^]Ç]^]Ç^Ç^à^àÇâÇàÇâ˛à≠à≠àà^à^à^àÇà^Ç]^]˛à]]^]Ç]Ç^ÇW^]Ç]Ç]à]^]Ç]Ç]ÇW]WÇ]Ç]Ç]Ç]à]Ç^à]Ç]Ç]Ç]ÇW^]àǨ¨≥ààVzUzVÅŨ¨≥¨≥¨¨ÄVVÄVV+U+1+U+U+V+1+U+UV1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V]âàà^àÇâà≠à≠à≠ààÇàÇà^à]ÇÇàà≠ÇÇ^Ç]^^Ç]Ç^à^Ç^à]Ç^àà≠à≠à≥¨≠à≠à≠à≥àâà≠à≠à≠àâÇOàÇà]Ç^à]Ç^à^à^àÇà^Ç^àÇàà≠ààÇâà≠à≠à≠à≥≠≠à≥≠≠ààÇàÇà^Ç^àÇÇ]àà≠ÇÇ^Ç]àÇà^Ç]Ç^àÇà^Ç^ÇDzà
  2643. ]Ç]Ç^à^Ç]àDzà8^Ç]àÇà^àÇà]Ç^àà≠¨≥¨≥¨ÅVÄVÄVÅÅ≥≠◊≠≥¨¨zÄVÄVV+V1V1V1V1V1V1V1P+V+1+V+U+V+1+V+U+V+1+V+U+V+1+V+U+V+1+V+U+V+1+V+U+V+1+V1]ÇâÇàÇàÇàÇà^àÇà]^]Ç]Ç]^]Ç^˛à]^W^]^]Ç]Ç]Ç]Ç]^]àà≠à≠à≠à≠à≠à≠à≠à≠ÇàÇàÇàÇà^Ç]Ç]^]Ç]^]Ç]Ç]Ç^àÇà^àÇàÇàà≠àâà≠à≠à≠à≠à≠ÇàÇàÇà]Ç]Ç]Ç]^]Ç]^]¨àÇ]Ç]^]Ç]Ç]^]Ç]Ç]^W^]àÇà]^%]^WÇ^ÇW^]à^àÇÇW^]à^Ç^à]^]à^àà≠¨≠¨¨ÄzVz˛VÅÅ≠≠≥¨≠àÅVzVV+1+V+U+V+1+V+U+VV+V1V+V1V+V1V+V1V+V1V+V1V+V1V+V1V+V1V+V1V+V1V+V1V+V1V1V]âà≠àâààÇà^Ç^Ç^à]^^à^Ç]Ç^àÇ≠Ç^WÇ^à]à^à]Ç^Ç]Ç^àà≥≠≠à≥à≠à≥≠≠à≠à≠àâÇà]à^Ç^à^Ç]à^Ç]Ç]Ç]à^Ç]àà≠à≠àâà≠à≠à≥¨≠à≠¨≥à≠ààÇà^Ç]à]Ç]Ç^à]à]Ç]Ç]Çà≠^Ç]à^ÇWÇ^à]Ç^Ç]Ç]^]àÇà^à^Ç]ÇÇà^Ç]Ç^àÇà^Ç^àÇàÇàÇà^Ç^àਨ≥¨≠àÅVzVÄVÄVŨ≥≠◊¨≠ÅÅVzVV1V+V1V+V1V+V1V+P+1+U+1+U+1+U+1+U+1+U+1+U+1+U+1+U+1+U+1+U+1+U+1+U+1+U+UVÅ^à^Ç]Ç^Ç]^W^]Ç^ÇW^]à]^]^]˛à]^]^]^]Ç]^]^]^]^^≠¨≥¨≠¨≠à≠à≠Çà^Ç]Ç^à]^]^]^^ÇW]]^]^]^]^]^]^]àà¨à≠à≠à≠à≠à≠ÇàÇàÇà^à]à]Ç]^]^W^]Ç]Ç]Ç]^]^]ààÇW^]ÇW]WÇ]^WÇ]^]Ç]^]Ç]Ç]^$]Ç]à]^]^]Ç^à]Ç]Ç]Ç^Ç]Ç]Ç]ÇÇàǨ¨≠à¨ÅzU˛VUVVÅà≠¨≥¨¨ÅÄVV+1+1+U+1+U+1+U+1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V+VU]]àÇà]^]Ç^à^^]àÇà^à^Ç^à^Ç^àà≠Çà^Ç]Ç^Ç]à^^]à^Ç^â≠◊≠◊≠≥à≠ààÇâ^^]Ç^à^à^Ç]Ç^à^Ç]^]Ç]^]à^Ç]à^àà≥≠≥¨≥¨≠à≠à≠ÇàÇà^à^Ç^àÇà^à^^]Ç]Ç^àÇàÇà^Ç]àà≠^Ç]Ç]Ç]^]à^Ç]à^àÇà^Ç]à^Ç]àÇàÇà^Ç]ÇÇàÇàÇàÇàÇà^àÇà^Ç^àÇà¨≥¨≥¨ÅVÄVÄVÄVÄĨ¨◊¨◊¨¨ÄÅVV+V1V1V1V1V1V1V1+U+U+U+1+U+U+U+1+U+U+U+1+U+U+U+1+U+U+U+1+U+U+U+1+U+1+V2]]à]^W^]Ç^Ç]^]à]Ç^^]à^^]Ç^àÇà]^]^]Ç]^]ÇW^]Ç]àÇ≠¨≥¨à^Ç^Ç]Ç^ÇW^]^]Ç]Ç]^]^]Çy]Ç]^]^W^]Ç]^]à]àà≠à≠ààÇà^Ç]Ç]^W^]^]Ç]à]^]^W^]^W^]Ç]à]Ç]^]àÇÇW^W^]Ç]^]à]Ç]Ç]Ç^à]^]ÇWÇ^à^Ç]Ç]^]Ç]à^à]Ç]à]Ç^à^à]^]Ç^¨¨≠¨≠ÅzUz˛VzVzĨ¨≥¨≥¨¨VV+1+U+1+U+U+U+1+UV+V1V+V1V+V1V+V1V+V1V+V1V+V1V+V1V+V1V+V1V+V1V+V1V+V1U1]W^^à^Ç]Ç^Ç^Ç^à^à^à]Ç^Ç]Ç^àÇ≠ÇÇ]Ç]^]à^Ç]Ç]Ç]àÇàà◊≠≠^Ç]Ç]^]Ç]Ç]Ç]Ç^Ç]Ç^Ç]Ç]-Ç]à]Ç]Ç]Ç]à^Ç^àà¨à≠àà]à^Ç]Ç]Ç]Ç]Ç]Ç^Ç]Ç]^]Ç]^]˛Ç"]àÇàÇàÇàà≠ÇÇ]^]Ç^à^Ç^à^à]Ç]Ç^à^Ç]Ç^˛àB^Ç]Ç^Ç]à^à^à^Ç]Ç^àÇàÇÇ]Ç^àà≥¨≥¨¨VzVÄVzVÄVÄŨ¨≥¨◊¨ÅVV1V+V1V+V1V+V1V++1+U+1+U+1+U+1+U+1+U+1+U+1+U+1+U+1+U+1+U+1+U+1+U+1+U+VV]W^]Ç]^W^]^]Ç]^]Ç]^]^]^]^]àÇà]]W^W^]^W^]Ç]^]Ç^¨¨≥à^]^]^W^]^W^]^]Ç]^]^W^]^W^]^W^]Ç]^]^]ÇÇàǨàà]^]Ç]^]Ç]^]Ç]^]^W^W^]^]^WÇÇàÇàÇàǨà¨à¨àà]]W^]^]Ç]^]Ç]Ç]^W^]à]^]Ç]à^Ç]^]à]^]^W^]à]^]Ç]à^à]Ç]ÇǨ¨≠¨≠ÅzUVVzUVVzVÄÄ¨à˛¨ÅÄ1U+1+U+1+U+1+U+1V1V+V1V+V1V+V1V+V1V+V1V+V1V+V1V+V1V+V1V+V1V+V1V+V1V+VV]]Ç^Ç^à^Ç^Ç^à^à^Ç^à^Ç]à^^]àà≠ÇÇ]^]Ç^Ç]Ç^à^à^à^à¨≥≠≠^^]à^^]Ç]^]à^Ç]Ç^à]Ç]Ç]+^]^]Ç]Ç]à^^]àÇàà≠¨≠àà]Ç]Ç^à]à^Ç^à^Ç]Ç]Ç]à^Ç^˛àj^àÇàÇ≠¨≥¨◊≠≠àà]Ç]Ç]Ç]à^Ç^à^Ç]Ç^à^à^Ç]à^Ç^à^Ç^à^Ç]Ç^Ç^à^ÇÇàÇà^àÇà^àà≠¨≥¨¨VÄVÄVÄVÄVÄVÅŨ¨◊¨≥ÅV+V1V+V1V+V1V+V1u+U+1+U+1+U+1+U+1+U+1+U+1+U+1+U+1+U+1+U+1+U+1+U+1+U+1+V2]]Ç]Ç]^]Ç]^]^]Ç]^]à]^]Ç]^ÇàÇÇW^]^]^]^]^]Ç]Ç]ÇÇ≠¨≥àÇW^]^]^]^]^]Dz]1Ç]^W^]^W^W^]^W^]^W^]Ç]àà¨Çà^^W^]Ç]^]^]Ç]à]^]^]Ç]Ç]˛àk]]WÇ]^Ǩ¨≠¨≠Çà]Ç]^]^]^]Ç]Ç]Ç]^]Ç]^]à]Ç]^WÇ]Ç]Ç]^W^]Ç]Ç^Ç]Ç^à]Ç^à]^]¨à¨¨≠ÅÅVVUVVzUVVÄVÄŨ¨≥¨¨VU+U+1+U+1+U+1+UU+V+U+V1U+V+U+V1U+V+U+V1U+V+U+V1U+V+U+V1U+V+U+V1U+V+U1]]Ç^à^Ç]Ç^Ç]à^Ç^à^Ç]Ç]Ç]Ç^àà≠Ç^]Ç^Ç]Ç]^]Ç^^]àÇàà≥≠≠]^]^]Ç]^]Ç]^]Ç]Ç]à^Ç]Ç]^]Ç]^WÇ]Ç]^]Ç]àà¨à≠àà]Ç]Ç]Ç]Ç]Ç]Ç]à^^WÇ]Ç]Çà≠ÇÇ]^]Ç]ÇÇ≠ààÇà^Ç]à^Ç]Ç]Ç]Ç^Ç]Ç]Ç]Ç^à^à^Ç]Ç^à^à^à]Ç^àÇàÇà^àÇà^Ç^à^à^Çà≥¨≥¨¨ÅÄUzVzVÄVzVÄVÅÅ≠≥≥ÅÅUU+V1U+V+U+V1U+S+1+1+1+U+1+1+1+U+1+1+1+U+1+1+1+U+1+1+1+U+1+1+1+U+1+1+VW^]^]^W^]^]^]Ç]^]^]^W^W^]Ç^àÇà˛]Ç]^W^W^]^W^]àǨ¨≥Ç^]^]^]^]^]^W]]Ç]^]Ç]^]^W^]^W]]^]^W^]^]àÇàÇà]^]^]^]Ç]^W^]Ç]ÇW]W^W]]àÇÇW^W]W^WÇ^ÇW]W^]Ç]ÇW^]^]^]^W^]Ç]Ç]Ç]Ç]ÇW^]BÇ]^]à]Ç]à]à]Ç]Ç]à]Ç]^]Ç]Ç]à¨≠¨¨ÅÅVVUVUVUVUVVzVÄŨÅÅVV+1+U+1+1+1+U+1V1V+V1V+V1V+V1V+V1V+V1V+V1V+V1V+V1V+V1V+V1V+V1V+V1V+UV]]à^Ç]Ç^Ç^à^^]à^^]Ç^^]Ç^Ç^âà≠Çà^Ç]à^^WÇ^Ç]Ç^à^à¨≥≠≠^Ç]à]^]à^Ç]Ç]Ç]à^à]Ç]Ç]àÇà]Ç^Ç]à]^]à]ÇÇ≠à≠àà]Ç]à^Ç^à]^]˛à,]à^Ç]Ç]ÇÇà^^]à^^]Ç^Ç]Ç]^]Ç^Ç]Ç]Ç]à^Ç]Ç^Ç]àÇÇ]˛à ^Ç^à^Ç^ÇÇàÇà^˛à6^Ç^àÇàÇÇ]àÇàÇàà≥¨≥¨¨ÅÅVzVÄVzVÄVÄVÄVÄV\VV1V1V+V1V+V1V+V1+U+1+U+1+U+1+U+1+U+1+U+1+U+1+U+1+U+1+U+1+U+1+U+1+U+1+VW^]^]^]Ç]^]Ç]^]Ç]^]^W^]^]^ÇâÇÇ]^]^]ÇW]WÇ]^]^]ÇÇ≠¨≥àà]^]ÇW^]^]^]^]^]Ç]^]^]Ç]Ç]^]ÇW]]^W^]Ç]àà≠à¨]^W^]^]^]^W^]à]^]Ç]^]Ç]àÇÇW^]Ç]^]^W^]Ç]^]^W^]ÇW^]Ç]Ç]^]Ç]à]^]à]Ç]Ç]^]^]à^à]Ç]à]^]Ç^àÇà]Ç]à^àà¨à≠¨≠ÇÅVVUVUzUVUzU˛V+1+1+1+U+1+U+1+U+1+UU+V1U+V+U+V1U+V+U+V1U+V+U+V1U+V+U+V1U+V+U+V1U+V+U+V+U2]^Ç^Ç^Ç^Ç]^]à^Ç]à^Ç]Ç^^]Ç^ààâ^^]Ç^à]ÇW^]Ç]Ç]Ç^à¨≥≠≠^Ç]Ç]à]^]^]^]^]^]Ç]^]Ç])Ç]Ç^à]^]Ç]Ç]àà≠¨≠¨≠àà]^]^]^]^]Ç]Ç]Ç]Ç]à^àDzà8]Ç]Ç]à]^]Ç]ÇÇà^Ç]^]Ç]Ç]^]à^Ç]Ç^à^à^à^à^Ç]Ç]ÇWÇÇàÇàÇÇ]Ç]Ç^˛à^à^àÇ˝à'≠¨≥¨¨ÅÅUzVzUzVzVÄVzVV1U+V1U+V+U+V1U+V+U++1+U+1+1+1+U+1+1+1+U+1+1+1+U+1+1+1+U+1+1+1+U+1+1+1+1*VWÇ]^]^]^]^W^]Ç]^]Ç]Ç]^]^]^ÇàÇÇW^]Ç]^]^W^]Ç]^WÇÇ≠¨≥Ç^]^]^]^W]]^W]W]W^]^W]]^]^]Ç]^W^]à^àÇ≠¨≥¨≠à≠ÇàÇàÇà^Ç]^]Dz]v^]^]Ç]àÇà]^]^W^]ÇW^ÇàǨàà]^W^]^]^W^]Ç]^]Ç]Ç]Ç]Ç]Ç]^]ÇW]]à]à]Ç]^]Ç]Ç^à]Ç]Ç]Ç]à^àà≠¨≠ààVVUVUVUVUVUVUVUV+1+U+1+1+1+U+1+1+1V1U+V1U+V1U+V1U+V1U+V1U+V1U+V1U+V1U+V1U+V1U+V1U+V1U+UVà^à^Ç]Ç^Ç^à^Ç^à^Ç]àÇà^à^^]ààâÇà^à]Ç^Ç]Ç^à^à]^^≠¨≥≠≠]^]à]^]Ç]Ç^à]^W^]Ç]Ç]Ç]Ç^à]Ç]Ç^àà≠¨≥≠≥≠≥≠≠à≥≠≥≠◊≠≠à≠Çà^à]^]Ç]^]àÇà^à^Ç]Ç]Ç]àà≥≠≥≠≠Çà^Ç]Ç]à^Ç]à]Ç]Ç]à^Ç]àÇà^àÇà^Ç]Ç^à^Ç]Ç^Ç^àÇàÇà^Ç^àÇÇ^àà≠¨◊¨≠ÅÅUVVÄVzUzVzUÄVVUV+U+V1U+V1U+V1U+V1+U+1+U+1+U+1+U+1+U+1+U+1+U+1+U+1+U+1+U+1+U+1+U+1+U+1+V]Ç]Ç]^]^]^]^]^]^W^]Ç]Ç]Ç]^ÇâÇÇ]Ç]^]^W^]^]^]Ç]ÇÇ≠¨≥Ç^W^]^W^]^]^]^W]]^W]]^W^]Ç]^W^]àà≠à≥¨≠ààÇà]Ç^àÇàà≠à≠¨≠ààÇ^W]W^W]]Ç^Ç]Ç]Ç]^W^]¨¨≥¨≥àà^Ç]^W^]Ç]Ç]^W^W^]Ç]^]Ç]Ç]à]Ç]^]Ç]Ç]^]Ç]Ç]Ç]Ç]Ç]Ç^Ç]ÇÇàਨ≠¨¨VVOVUVUVUVUVUVUV+1+1+U+1+U+1+U+1+UU+U+U+V+U+U+U+V+U+U+U+V+U+U+U+V+U+U+U+V+U+U+U+V+U+U+U2Ç^^]à^Ç]Ç^^]Ç^Ç]^]^]Ç^à]Ç^ààâ^^]à^Ç]^]^]Ç^à]Ç^àà◊≠à]^]^]Ç]^]Ç]^]Ç]^]^W^]^]&Ç]Ç]^]≠≠≥¨≥¨≠ÇàÇà]^]^W^]ÇÇ≠¨≥≠◊≠≠ÇÇ]^WDz]oà^Ç]à^Ç]Ç]àà◊≥≥¨≠àà]à^Ç]à^Ç]Ç]^]Ç]Ç]Ç]Ç]à^Ç]Ç^Ç]à^à]Ç]Ç]Ç^à^à^Ç]à^à]Ç^àÇ≠¨≠¨≥¨ÅUVUzUzVVUzUzUzUU+U+U+V+U+U+U+V+U++1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1*VW^]^]^]^]àW]]^]^]^]^]Ç]^]Ç^àÇÇ3^]^W^]^W^]Ç]^]àÇ≠¨≥Ç^]^W]]^W^]]W^]^]^W]W]W]#W]]^]àà≥¨≠ÇÇW]]^]]W^3]W]3]]àǨ¨≥¨¨Çà˛]K^3]]Ç]^]^]^]Ç]¨¨≥¨¨àà]^]Ç]Ç]Ç]^]^3]]^W^]Ç]Ç]Ç]^]Ç]Ç]à]Ç]^W^]Ç]Ç]Ç]Ç]Ç]^]^]àศVUOVUVUVUVUVUVUV˛+1+1+1+1+1+1+1+1V1U+V+U+V1U+V+U+V1U+V+U+V1U+V+U+V1U+V+U+V1U+V+U+V1U+U2^^à^Ç^à^à^Ç^Ç^Ç^Ç^à^Ç]Ç^Ç^âàâ^^]Ç]Ç^Ç]Ç]Ç^à^àÇ≠¨≥≠≠^^]Ç]Ç]Ç^ÇW^]Ç]Ç]^]à]^WW^]Ç^≠≠≥≠≥àà]^]^]Ç]^]Ç]Ç]^W^]àÇ≠¨◊≥≥àà^à]Ç]Ç^à^Ç]à^Ç^≠≠◊≥◊à¨àà]^]à^Ç]à^ÇW^^Ç]Ç^Ç]àÇà^à^Ç]˛à>Çà^Ç]à^àÇàÇàÇàÇà^à^Ç]àਨ≥¨≥¨ÅUVUzVVUÄVVUzVzUV+U+V+U+V1U+V+U+V1+U+1+1+1+U+1+1+1+U+1+1+1+U+1+1+1+U+1+1+1+U+1+1+1+U+1+VW^]Ç]Ç^Ç]^]Ç]^]^]^]Ç]^]^]ÇÇ≠ÇÇ]^W^]Ç]^]^]Ç]Ç]ÇÇ≠¨≥Ç^W^]^]^W^]]3^W^]^W^]àWW3^]àà≠¨≠^^W^]^W]W^W^]Ç]ÇW]W^]^]àà≥¨≠àà]^]^W^]^WÇ]^]Çà≥¨≥¨à]àÇ^W]]^]Ç]Ç]]WÇ]^]à]^]ÇWÇ]ÇW^^à]Ç]Ç]Ç]Ç]à^Ç]àÇà]Ç^à]Ç]àǨ¨≠¨¨ÅVOVUVUVUVUVUVUV+1+1+1+1+U+1+1+1+UU+U+U+U+U+U+U+U+U+U+U+U+U+U+U+U+U+U+U+U+U+U+U+U+U+U+U2Ç^Ç]à^à^Ç]^^à^^]à^^]Ç]^]Ç^ààâ^^W^]Ç]Ç]Ç]Ç]Ç]Ç^àà≥≠≠]Ç]^]Ç]^WÇ]^W^]^W^]à]ÇW9]]≠¨≥≠≥àÇ3^]Ç]Ç]^W^]Ç]à]ÇW^]Ç]Ç]àà◊≠≥àà]Ç]^]^]Ç^à]àà≥≠≥¨¨^˛à\]^]Ç]à]Ç]Ç]Ç^à]Ç^à]Ç]Ç^à]Ç^à^à]Ç]à^à^àÇà]Ç^àÇàÇàÇà^^]à¨≥¨≥¨ÅVzUVUzUVUzUVUzUV+U+U+U+U+U+U+U+U+_+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+V]Ç]^]^]^]^W^]^W^]^W]]^W^]ÇÇàÇÇW]W^]^]^]^]^˛]'ÇÇ≠¨≥Ç^]^W]W]3]W^]]W]W]W^]^W]Wàà≥¨≠àÇW]3˛]W^W]W]W]]^]]W^]^]]Wàà≥¨≠ÇDz]G^W^]à]ÇÇ≠à≠àà]^]àÇÇ]^]à]Ç]^]Ç]Ç]^]Ç]Ç]Ç]Ç]^]Ç]Ç]^]^]^]à]Ç]Ç]^]ÇÇà^à]^W^]˝¨"≠ÅVUVOUUVUVUVOVUV+1+1+1+1+1+1+1+1+1|U+U+U+U+U+U+U+U+U+U+U+U+U+U+U+U+U+U+U+U+U+U+U+U+U+U+VVà^Ç^Ç]Ç^Ç]Ç^^]Ç^à]^]^]Ç]ÇÇ≠àà^à^Ç]Ç^Ç]Ç]^]à]^]≠≠≥≠≠]^W^W^]^]^]à]^]Ç]^]à˛]ià¨≥≠≠Çà]Ç]Ç]à]^]àÇàÇà]Ç]à]Ç]Ç^à]^^àà◊≠≥Çà]Ç]Ç^ÇÇâà≠à≠ÇàÇà]Çà≠ÇÇ]àÇà]à^Ç]Ç^à]à^Ç^àÇÇ]à^ÇÇà^Ç]àÇÇ]à^Ç]ÇÇà]Ç^¸à*]Ç]Çà◊¨≥¨¨VVUzUVUzUVUzUzUV+U+U+U+U+U+U+U+U+z+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+]]^]^]^]^]^]^W^]Ç]^]^]^W^]àà≠^Ç]Ç]^]^]^]^W^]^WÇÇ≠¨≥Ç^3]W]3]]^W^]^W^]^W˛]Çà≥à≠Ç^W]]ÇŨÇÇ3]]àà¨Ç^]^]Dz]^˛]X^]àà≥¨¨]Ç]]W^]ÇÇàÇÇ]Ç]Ç]^]ààÇW^]à]Ç]ÇW]W^]^]Ç]Ç^à]^]Ç]à]Ç]^]à]Ç]^W]WÇ]^W^]à^à]Ç]^]¨¨≠¨¨ÅIJUVUVUVUVUVUV+U+1+1+1+1+1+1+1+1OU+U+U+U+U+U+U+U+U+U+U+U+U+U+U+U+U+U+U+U+U+U+U+U+U+U+VVÇ^^WÇ]^]Ç^^]Ç^^]à^^]à]^]ÇDzàÇà]Ç]^]^]^]^]^]Ç^¨¨◊≠àW^]^]^]^]Ç]Ç]^]^]^]^W^Ç≥≠≥àÇ]^]^Ç≠¨≠Ç^]àà≥¨¨]Ç]^]à]^W^]^]Ç]¨¨◊≠¨ÇÇ]^]Ç]Ç]Ç]Ç]à]^]àà¨]^]Ç^à]Ç]Ç]^]Ç]Ç]Ç^à^àF^à]à^Ç]Ç^Ç]à^ÇW^W^]Ç]^]àÇà]àÇà]Çà≠¨≥¨¨ÄzUVUzUVUVUVUzUV+U+U+U+U+U+U+U+U+˛+1+1+1˛+1+1+1˛+1+1+1˛+1+1+1˛+1+1+1˛+1+1+1˛+1+W]^3]W^]^]^]^]^W^]^]^]^W^]àÇàÇÇW^]^W]W]W]W^W]]àÇ≠¨≥Ç]3^]]W]3]]^]]W]3]W]3]]¨à≠àÇW]W]WÇà≥¨àW]]à¨≥ÇÇ]]W]]^W]W^]Ç]ÇÇ≠¨≥àà]]W]W^W]3\]]^]^W]]¨Ç^W]WÇ]^]^]^W^]^WÇ]Ç]Ç^à]Ç]ÇW]]Ç]^]ÇW]W^]^]^W]]Ç]Ç]Ç]^]àਨ≠ÅÅUUOUUVOUOVOUUV+1+1+1+1˛+1+1+1++DU+U+U+U+U+U+U+U+U+U+U+U+U+U+U+U+U+U+U+U+U+U+U+U+U+U+VVÇ^à^^]à^à^à^Ç]Dz^à^^]^]Ç^≠àà]^]Ç]^]^]Ç]^]à^àÇ≠¨≥≠≠]]W^]^W^]^]Ç]^]^]^]^^≠¨≥¨à]^]^]Çà≥≠◊Ç^WÇà≥≠≠ÇÇ]Ç]Ç]Ç]Ç]¨¨≠¨≠¨≥≠◊àÇ]à]Ç]à^^WÇ]Ç]à]àà≠^^WÇ]Ç]Ç]Ç]Qà^Ç]Ç^àÇàÇà^ÇÇà]Ç]Ç]à^Ç]Ç^à^àÇà^Ç]Ç]àÇà^à^àà≥¨≥¨¨ÅÄUzUVUzUVUzUVUVUU+U+U+U+U+U+U+U++1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1*11]W^]^W^]Ç]Ç]^]Ç^Ç]^]^W^W^WÇÇà^^3^]^W^]Ç]Ç]Ç]Ç]ÇÇ≠¨≥à^3]W^W]W]W]W^W]W]W]]àà≥¨à]]W^W^Ç≠¨≠ÇÇW]]¨¨≥àà]]W^]^]^W]Ç≥¨≠à≠¨≥≠≠]^]^W]]^W]]^W^]^]¨àÇW]W^]^]Ç]Ç]Ç]Ç]^]à^à]^]à]^]^]Ç]Ç]^]Ç]Ç]Ç]Ç]Ç]Ç]à]Ç]Ç]àà≠¨¨àÅVUUVOUUVUUOVOUOU+1+1+1+1+1+1+1+15U+U+U+U+U+U+U+U+U+U+U+U+U+U+U+U+U+U+U+U+U+U+U+U+U+U+VV˛^]Ç]^]Ç^Ç^àÇàÇà^^]Ç]^W^]àÇà]^WÇ]Ç^àÇàÇàÇà^àÇàà≥≠àW^W^]^]^W^]^W^]^W^]àà≥≠≠^^W]]Ç^¨¨≥àÇ]^]àà≥≠≥àà]]WÇ]^]^]à¨◊¨¨à≥≠≥¨à]]W^W]WÇ]Ç]Ç]^`]àà¨]Ç]^Wà^Ç]à]^]à^Ç]Ç^à]Ç]Ç]à]Ç]à^Ç]à^Ç]àÇà]Ç]àÇà^Ç]Ç^Ç]àà≠¨≥¨¨ÅÄUVUVUVUzUVUVUV+U+U+U+U+U+U+U+U+˛+1*++1˛+1*++1˛+1*++1˛+1*++1˛+1*++1˛+1*++1++*11WW^W^]^W^W^]àÇà]^]^W^]^W]WÇÇà^Ç]Ç]Ç]à^Ç]Ç]Ç]ÇÇà]à¨≥Ç]3]3]W]3]W]W]W]W]W^Ç≠¨≠Ç^W]3]WÇÇàÇÇW]W^]à¨≥¨¨]]3]W]W]W^Ç≠≠≥Åàà≥¨≠àd^3]W]W]]^W]W]W]]≠àÇ]^W]]ÇW]]^W^]Ç]^]^]^]^W]]Ç]à]ÇW^]^W^]à]Ç]Ç]à^ÇW^]Ç]Ç]àǨ¨≠ààVUOUOUOUUVOUOU+U+1*++1˛+1*++1++<U+U+U+U+U+U+U+U+U+U+U+U+U+U+U+U+U+U+U+U+U+U+U+U+U+1+\W^]Ç^^]Dz^˛à]Ç]^]^]Ç]Ç]ÇÇ≠ààDzàDzà^àÇàDzàtÇàà≠àà]]W^W^W^]^]Ç]^WÇ]^]≠≠≥àÇ]]W^]^]àÇÇ]Ç]^]àà≥≠◊¨àW^]^W^]ÇÇ≠≠≥àà^≠≠≥≠≠]^W^]Ç]^]Ç]Ç]^]àà≠ÇÇ]Ç]Ç]^]Ç]Ç^Ç]à^Ç]Ç^à]Ç]Ç^˛à]Ç]Ç]à^àDzà2^à^à^Ç]Ç^à^àÇ≠¨≥¨≥àÄUVUVUVUVUVUVUVUU+U+U+U+U+U+U+U+N+1*++1+1+1*++1+1+1*++1+1+1*++1+1+1*++1+1+1*++1+1+1*12]W^W^W^]^]àÇà]^]^W^]^W^]^]˛à8^ÇÇà^Ç^à]àÇàÇàà≠Çà]Ç]Ç]^W]W]3]W]3]]^W]]^W^à≥¨àW]3]]^W]W^W˛]gW^Ǩà≠¨≠Å]W]W]W^]¨¨≠ÇÇ]ÇÇ≠¨◊àÇW]W]W]3]]Ç]]W]]àÇÇ]^]Ç]^W^]Ç]Ç]^]^]^]Ç]ÇW^WÇ^à]^]^WÇ]ÇW^]à]Ç]ÇW^]Ç]Ç]Ç]ÇÇ≠˝¨VUOVOUOVOUOVOUOU˛+ 1+1+1*++1+1+1O1+U+1+U+1+U+1+U+1+U+1+U+1+U+1+U+1+U+1+U+1+U+1+U+1+1+\WÇ]^]^]^]âàà^^]Ç]Ç]^W^]Ç]àDzàfÇàÇàÇà^àÇàÇ≠à≠àâÇÇ]^]^]^]^W^]^W^]^]^W^]^Ç≠≠≥Ç]3^]^]^]]W^]^W^^àà≥≠≥¨¨]]WÇ]^]àà≠Çà]^]àà≥≠≥ÇÇ]Ç]]W^]Ç]à]]W˛à\]Ç^à]à]Ç]à]Ç]Ç]Ç]Ç]Ç]à]Ç]Ç^Ç]Ç]^]Ç^à]Ç]Ç]àÇÇ]Ç]Ç]à^à]ÇǨ¨≥¨≥àÅUVUVUVUVUVUVUVOU+1+U+1+U+1+U+1+d*++1*++1*++1*++1*++1*++1*++1*++1*++1*++1*++1*++1*+*12]]^W]W^]ÇÇ≠]^W^W^]^3]WÇ]^]ÇÇàÇà^àÇà]Ç]^W^ÇàÇà^^W˛]83]]^W]W]W]W]3]3]3]Wàà≠àÇ3]W]W]W]3]3]W]WÇ^àà≠¨≠àÇW]W]W]]^W˛]W]]àà≥¨¨]Ç]]W]]^W˛]a3]]àÇÇ]Ç]^]^W^]]3]W]W^]^]Ç]Ç]Ç]ÇW]W]]Ç]ÇW^]Ç]Ç]à]^]^W^]Ç]^]àǨ¨≠¨¨VUOUOU+UOUOUOUOU+1*++1*++1*++1*+U+U+U+U+U+U+U+U+U+U+U+U+U+U+U+U+U+U+U+U+U+U+U+U+U+1+]]à^Ç]^]àà≠Çà]^]Ç]^]^]^]à^Ç^≠ààÇàÇà^à^^]^]àà≠ÇÇ]^]Ç]Ç]^]Ç]^]Ç]]W^W]W^]ÇÇ≥¨à]'Ç]Ç]^]^]^W]W^]^]âà≥≠◊≠≥ÇÇ]^]à]ÇW^]^]^]Çà˛≥nàà^Ç]Ç]Ç]^]Ç]^]àà≠ÇÇ]Ç^Ç]Ç]ÇW^]Ç]Ç]Ç]Ç]Ç]à^à]Ç]^]Ç^Ç]Ç^à^à]Ç]àÇÇ]Ç]Ç^à^àÇ≠¨≥¨≥¨ÅUVUVUVUVUVUVUzUU+U+U+U+U+U+U+U++1˛+1*++1˛+1*++1˛+1*++1˛+1*++1˛+1*++1˛+A1*++1*12]]^]^]Çà≠Ç^]^W^]^]^]^W^]^]ÇÇà]^]^W]]^W]WÇÇàÇÇ]^W^]^]^W]W^W˛] 3]WW3]W^]¨¨≠˛]<^]]W]W]W]3]W]WÇÇ≠à≥¨≥¨à]]W]]Ç]]W^]]W]]à¨◊¨≠Ç^W]]^]]W]W]W^]àÇà˛W^]^W^]]W^˛])ÇW]W^]Ç]Ç]^W^]Ç]^W^]Ç]Ç]^W^]à]^W^]Ç]à]àÇ≠à˛¨ VUOUOUOVOUOUO˛U+1+1*++1˛+1*++1]1+U+1+U+1+U+1+U+1+U+1+U+1+U+1+U+1+U+1+U+1+U+1+U+1+U+]]à^^]àà≥¨â]^]^]^]Ç^à^à^Ç^àÇà^Ç]Ç]^]^]^W^]˛à^à]^]Ç]^]^]]W^]^]^]]3˛]=Wà¨≥àà]]W^]]W^]^W^W]W^^àà≥≠≥¨≥àÇW^]Ç]^]Ç]^W]WÇÇ≥≠◊¨àW^]Ç]^W]]à˛]_àÇàÇÇ3]]Ç]^W^]^]Ç]^]Ç]Ç]Ç]^]Ç]^]Ç^Ç]Ç]à]Ç]Ç]à]Ç^à^Ç^àÇàÇ≠àâà≠¨≥àÅUVUVUVUVUVUVUVOU+1+U+1+U+1+U+1+p*++1*++1*++1*++1*++1*++1*++1*++1*++1*++1*++1*++1*+*U2^]^W^^≠¨≠Ç^W^W^]^]Ç^à^à^Ç^Ç]^]^]^]]3]W]WÇÇàÇÇ]^W]W]W]W]3W3]W˛]|3]3]3]Ç≠¨à]]3W3]W]W]W]W]]^]à^àà≥¨≠¨¨]]W]W]W^]]WW3]Wàà≥¨≠Ç]W^]^W]W^]^3]]Ç]ÇWW3]W]3]W^]^]ÇW]W^]Ç]^W]]^W]]Ç]^]à]Ç]Ç]àÇÇ]Ç^à]ÇÇàDzà%Çàà≠¨¨VVOUOUOUOU+UOUOU+1*++1*++1*++1*+U+1+U+U+U+1+U+U+U+1+U+U+U+1+U+U+U+1+U+U+U+1+U+U+U+1+]^Ç]Ç^à¨◊≠à]^]^]Ç]^^à^Ç]à^Ç]à]^]Ç]^W^]^W^^àà≠ÇÇ]^]^W^]^]^]^]^]^W^]^W]]¨¨≥à^W ]3]]Ç]Ç]^]Ç]˛à^àà≠¨◊≠≥¨à]^W^]^]Ç]^WÇ]^Ç≥≠≥¨≠]^]Ç]^WÇ]à]^]ÇÇàÇÇW^]^W^]Ç]à^à]ÇW^]à^Ç]àÇà]Ç]Ç]ÇÇàÇàÇàÇâàâàâÇàà≠ààÇâààÇàà≠¨◊¨ÅUzUVUVUVUVUVUVUU+U+U
  2644. +U+1+U+U+U+n+1*++1*++1*++1*++1*++1*++1*++1*++1*++1*++1*++1*++1*1V^]^]ÇÇ≠≠≥ÇÇ]^W^]^W^]^W^]^W^]^3]]^3]W^W]WÇÇàÇà]]W]3]W^W]]^W˛]KW]W]W]3ÇÇ≠àÇ3W3W3]W]W]W]WÇÅàÇÇ^àà≠¨≥¨¨ÇÇW]W^]]W]W]]^WÇà≥¨≠àÇW]W]W]W^]]W]]ÇÇà˛])^]]W]W^]Ç]Ç]]W]]ÇWÇ^à]Ç]à]Ç^àÇàÇàÇàÇàÇàÇàDzàÇÇ]Ç]Ç^àà˛¨ÄVUUOUOUOUOUOUOU+1+1*++1*++1*++1]1+U+1+U+1+U+1+U+1+U+1+U+1+U+1+U+1+U+1+U+1+U+1+U+1+1+]^à^Ç^≠≠◊≠≥àà]Ç]^]^]^]Ç]^W^]^]^W^W^W]W^]^]˛à^à˛]^]]W^]^]^]Ç]^W]]^˛]˛≠]W3]3˛]W^]^W]W^]àÇàà≥≠≥¨≥¨à˛]9Ç]Ç]]W^]^]^Ç≥≠≥¨¨]^W]W^]^]à]^]Ç]àÇà]^]à]Ç]^]^]Ç]Ç]Ç]^]Ç^àÇ˝à≠àâàâààDzàÇà^Ç^àDzà*^^]Ç]ÇÇ≠¨≥àÅVVUVUVUVOUOVUUOU+1+U+1+U+1+U+1+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*12^]^WÇà≥¨≥¨≠ÇÇ]^W]]^W]W^W]W^W]W]W]3]3WW^W]^à^Ç]^W]W]3WW]3]W]W]WW2]3]3]à≠Ç^3Wl3]W]3]3]W]W]3]]àÇ≠¨≥¨≠¨≠]]3]W]W]3]W]W]]àà≥¨≠Ç]3]W]W]W]]^W]W^]à]]W]]^]]W^W^]Ç]Ç^Ç]ÇÇà^Ç^à^àÇà^Ç]Ç]Ç^à]^W^WÇÇàDzà)W]]^WÇà≠¨¨ÅÄOUOUOUOU+UOU+U+U*+*+*+*+*+*+*+U+1+U+1+U+1+U+1+U+1+U+1+U+1+U+1+U+1+U+1+U+1+U+1+U+1+]^à]^^à¨◊≠≥≠≥àÇ]^]^]Ç]^W^]^]Ç]^]Ç]^W^W]]^]àÇàÇà]Ç]]W^W^]^W]]^]^W]W]W^^≠¨¨]]W'^]^]^W]W^]Ç]^W^Ç≥≠≥≠◊≠≥àÇ]]W]W]W^]]W^]ÇDz≥n¨¨]]WÇ]^W^]^]à]Ç]ààÇW^]Ç]Ç^à^àÇàÇâàâàâàâààÇàÇà^à^Ç]^]àÇàÇà]^WÇàâà≠à≥ààÇÇ]Ç^à¨◊¨¨zzUVUzUVUVUVUVUV+U+1+U+1+U+1+U+h+1*+*1*++1*+*1*++1*+*1*++1*+*1*++1*+*1*++1*+*1*+*1*1WÇ]^W^]àà≠¨≥¨à]^]^W]]^W^]^W^]^W]]^]]W]W]]Ç]àÇà]^]^WW3˛]3W3]W^W]W^W^]àà≠ÇÇ3W3]W]W]3]W]W˛]TWÇà≥¨≥¨≥àà]]3W3]3WW]W]W]Wà¨≥¨≠Ç]3WW^3]]^W]]^]ÇÇàÇÇ]à^àÇàÇàÇà^Ç^à^Ç^à]Ç]Ç]Ç^Ç]à]^]ÇÇàDzàW]]àÇàÇà¨≠àà]^]^ިÅÅUUOUOUOUOU+UOUOU*+*++1*+*1*++1Z1+U+1+U+1+U+1+U+1+U+1+U+1+U+1+U+1+U+1+U+1+U+1+U+1+U1]^à^^W^]ÇÇ≥≠≥Çà]^]^]^]Ç]^W^]^]^]^]à]^]^˛]˛à ÇÇ]Ç]ÇW]WÇ]^W^]^]à^à^à^àÇ≠àà]]3]3˛]W]W]W]W^]^^à¨≥≠≥¨≠ÇÇ]]3WW^W]W^˛]`ÇÇ≥≠≥àÇW]W]W]W^]Ç]Ç^àÇàà≠ÇàÇâààÇâàà^Ç^Ç^à]Ç]Ç]Ç]àÇàÇàÇà]àÇâà≠¨≥àà]Ç^àÇàÇ≥≠≥ààÇÇ]à¨≥à¨ÅVOVUVOVUUOV˛UV+1+U+1+U+1+U+1+T*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*V2^]^W]W^]àà≥àà]^]^]]3]W^3]W^W]W]W˛]wW]W]3]]àÇà]]3]]^W^]à]Ç^Ç]^^à^Ç^à^àà≠ÇÇ3]3]W]3W3]3W3W3]W^]¨¨≠àà]^]]WW2]W]2W3]W]]àà≥¨à]]W]WW3]W]]àÇàÇà^àÇà]Ç]^WÇ]à]^W^]Ç]Dz] Ç]àÇàǨàà]Ç]à^àÇ≠¨¨ÇÇ]Ç]Ç]àà≠à¨Çà˛]˛¨ÇÅOUOUOUOU+UOU+UOU*+*+*+*+*+*+*+oU+1+U+1+U+1+U+1+U+1+U+1+U+1+U+1+U+1+U+1+U+1+U+1+U+11Ç^Ç]Ç]^]ÇÇ≠≠≥ÇÇ]Ç^^W^]^]^W^]^]]W^]^]Ç]^]Ç^àÇ≠àà]Ç^à^àÇàÇâàâÇ˝àâ˝àÇ≠à≠Ç]W]W˛]R3]W]WW3]]^]Çà≥¨≠Ç^]^]]3]]^W]3]]Ç]àà≥≠≥àà]^]^W]WÇ]àÇâààÇà^Ç]Ç^Ç]Ç]à]Ç]Ç^àÇ≠àà]Ç^ààâà˛≠>Çà^Ç]à^àà≥¨à]Ç^Ç]ÇÇàà¨à≠àà^àà≥¨¨ÅzUVUVUVUVUVUVUU+U+1+U+1+U+1+U+N*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*V]à]^]Ç]]Wàà≥àà]^W^W]W^]]3]3˛] 3]]^WÇ^à^àÇâDzà:^Ç^à^à^àÇàÇàÇààâÇàÇàÇà]ÇÇ≠ÇÇ]]3]3]332W3]2W3]WW3ÇÇ≠Ç^3]W]2WW˛]%WW3]]Ç]à¨≥¨à]^W]WW3]]^]^]^W]W^W]]à^àÇà˛]PÇ^àÇàà≠ÇÇ]^]Ç]àà≥¨à]^W]]^]àÇà]^W^]Ç]^]ÇǨà¨àà]à¨≥àÅUUOUOU+UOUOUOUOU++*+*+*+*+*+*+=1*1+1+U+1*1+1+U+1*1+1+U+1*1+1+U+1*1+1+U+1*1+1+U++*U2]^Ç]Ç]Ç]^^˛≠5^Ç]^]Ç]^]Ç]^]Ç^Ç^à^à^ààâà≠à≠à≠à≠àâÇâàâààÇ≠à≠ÇàÇàÇà^Ç]Dz]≠¨à]ÇW]3]W]3]3W3]W]W^W]W˛Ç W]W]3]W^]^]]3˝] àà≥≠≥àà]^]]3]W]]Ç^^W]W]W^]ààâà≥àà˛]OàÇàà≥≠¨]Ç]^]Ç]àà≠ÇÇ]^W]WÇ]Ç]Ç]^]Ç^Ç]à^àà≥¨¨Çàà≠¨≥ÅVOVUUOVUUOVUUOUOU+1+1*1+1+U+1*W*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*++V3^]Ç]^]Ç]àà≥ÇÇ]^W^]^W^]Ç]Ç^àÇààâÇàà≠˛à≠à≠à≠ààÇà^àÇà^àǨàà]^]]3]˛3#]2]Ç≠ÇÇW]2W3]3]3W2W3]3]W]3W3W3]3W2W2˛]{3W233]3]Ç≠à≠àà]]W]3W3]W]]^W]W]3]W^]à^à¨≠Ç^3]W^]àà≠ÇÇ]]W]W]W^]Ç]]W]2WW]W]W^W^]Ç]Ç]à]àà≠ÇÇ]àǨ¨àUUOU+UOUOUOU+UOU*+*+*+*+*+*+*+uU+1+U+1+U+1+U+1+U+1+U+1+U+1+U+1+U+1+U+1+U+1+U+1+U+12^^àÇâÇà^âà≥≠≠Ç^]^]^]ààâà≠à≠à≠≠≥¨≠à≠à≥à≠à≠à≠à≠ààÇà^Ç]àà≠¨≥à^Wà]]3]3˝]Zà¨≠Ç]W^]]W^]]3]W]W]W]W]W]3]W]W]W]]à]]3]W]W]]≠≠◊≠≠ÇÇ]]W]W]W]]Ç^à]Ç]Ç]^]à^àà≥¨¨]^]^]Ç]àÇàÇÇ]^˛]AÇ]Ç]à]^W^]^]Ç]Ç]à^Ç]àÇàÇ≠¨≥¨≠ÇàÇ≠¨≥ÅÄUVUVUVUVUUOVUUOU+1+U+1+U+1+U+U*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*++]]à^àÇà^àÇ≠¨≠àÇ]^W]3^Ç≠à≠à≠à≠à≠à≠à≠˝à@ÇàÇà^Ç^à]Ç]]2]]¨à¨àà3W]]2W3]3]3]]¨¨à3WW]3]]Ç]]W]2W3]2W3]3W3]3]W]2˛]W3]3WWÇà≥≠≠Ç^W]3]W]W]3]W^^Ç˝][W]W]WÇÇà]^W]W]W]W]]Ç]]W]W]W]WÇ]ÇW]W]]Ç]à]àÇà]^]àÇàà≠à¨Çà]àà≥¨¨VUOUOUOUOU+UOU+U+1*+*+*+*+*+*+.1*1++*1+1*1++*1+1*1++*1+1*1++*1+1*1++*1+1*1++*1˛+sÅÇàÇâàà^àà≠à◊≠≠^Ç]^]^]àà≥≠≠à≠àâà≠ààÇàÇà^à^Ç]Ç]^W^]^3W3Çà≥¨≠Ç]3]W]W]3]W]Wàà≥Ç]3]3^Ǩà¨]]3]3]W]W]W]3W3]W]W]W]3]W]W]3]Dz≥àà]]3˛]W]WW3^^à˝]
  2645. W^W]]^]Ç]^]^W^˛]K^]^]à]]W^W]WÇ]Ç]Ç]]WÇǨà≠à¨ÇÇ]Ç^àà≠à≠àà]ÇǨ¨≥àÄUVUUOVUUOVOUOUOU+1+1*1++*1+1*W*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+Wà^Ç^Ç]^]àÇ≠¨≥àÇW]3]W^]¨à≠ÇÇ^à^Ç^Ç]^]^˝]3]3]2W3]WW2W]¨¨≠àà3W3W3]2W3]2]]à¨à3W2WWàà≠¨àW32W2W3]2]3W2W3]3]3W2W3]3]3W]¨¨◊¨¨]]233]W]W]2W]Ç^]3]W]W]W]W]3W3]W]W]3]W]W^]ÇW]W]WÇ^à]Ç]^3]]àà≠à¨Çà]]WÇÇ≠¨¨Çà˛]"ÇÇ≠¨¨VVOU+UOU+UOU+UOU*+*+*+*+*+*+*+1+1*U+1*1+1*U+1*1+1*U+1*1+1*U+1*1+1*U+1*1+1*U+1*1+]^Ç]^]Ç]ÇÇ≠≠◊≠≠^^3^]^]àà≠Çà^Ç]à]]3^]^]^]]W^]]W]3W3^]]3à¨≥à≥Ç]3]W]3]W]W]]^Ç≥à]3]3]Ç≥≠≥Ç]2W3]W]3]W]3]W]W˛]W^˝]˛W¨≠◊≥◊¨à]]3]]^]]W]]Ç^à˛]à^^W^W]WÇ]^]Ç]]W^]Ç]àÇà]Dz]Aà¨≥à≠ÇÇ]^]àà≥≠≠ààÇÇWÇ^àà≥¨¨ÇÇ^àÇ≠¨≠ÇÅVVOVUUOVUUOVOUOU+1*1+1*U+1*1+N*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*V2^]^3]W^]Çà≥¨≥à^3W3]3^^à]^W^W˛]˛3y]W]3]3W3]3]W]3WW]W]]≠à≠àÇ233W2W3]3]3]3Ǩ≠WW2WWà¨≥àÇ332W2W2W2W2W3]3]3]]ÇÇà]]3]2WÅ≠¨≥≠≥àà]ÇW]W]W]W]]à^^3^^à]]W]3]]Ç]à]ÇW]W]]˛àG]Ç]]W]Ç≥¨≠ÇÇW]W^]à¨≥àÇ]ÇW]WÇ]¨¨≥àÇ]à]àà≠à¨ÅzOUOU+UOUOUOU+U+U*+*+*+*+*+*+]+*1*+*1++*1*+*1++*1*+*1++*1*+*1++*1*+*1++*1*+*1*1+]^Ç]^W^]Ç^à¨◊≠à]^W]3^^àÇà]]W^]^]]3WW^]]3]3W3˝]^]^]Ç]à¨≥à≠]]3]3]W]3]WW2]]≠àà˛WÇà≥¨àWW3]W]3]W]2]W]W]W]]à¨≥¨¨W˛]W]]¨¨≥≠◊≠≥àà]]W˛]WÇ^à˛]Ç^à]]W]]àÇ≠àà]Dz]$≠≠≥àà]ÇW^]à¨◊¨àW^W^WÇÇ≠¨≠ÇÇ]Ç]Ç]àà≥¨≠˛Çàਨ≥àÅVVOUOVUUOVUUO˛U +1++*1*+*1++*e*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*2WÇ]]3]W]]ÇÇ≠≠≥Ç^W]3WWÇÇà]]3W3]3]W]3]W]3]3W2W3]3]WÇ]à˛]≠à≠ÇÇ3W2W3]2W2W232]ǨÇ]2]Ç≠ààWW232W2W3]2W2]3]3W2]]¨¨≥Ç]2]W]2]]Ç]àà≥¨≠àà]]W]W]W^^]3]]àÇÇW]WÇÇ≠ààW]W]3^à≥¨à]^W]W]]¨¨≠]]3]W]]àà≠àà]0]W^W^]àà≠àÇ]Ç^àǨà¨ÅVOU+UOU+UOU+UOU++*+*+*+*+*+*+_U+1*1++*U+1*1++*U+1*1++*U+1*1++*U+1*1++*U+1*1++*U2]^à]^]Ç]Ç^≠≠◊≠â]^]^W^^àÇÇ]^W]3]W^]^W]3^]]W]W]3˛]Ç≠≠àWà≠≥à≠Ç]3]W]3]W]3]W]Wàà≥Ç]]˛à]]3]3]3]W]W]W]W˛]3]WÇà◊≥¨W˛]
  2646. W]W]3]]à¨≥≥◊¨à˛]Dz];à]]WàÇà]ÇW]Ç≠≠≥Ç^]^W^]¨¨◊àà]^]^]à¨◊¨¨]^W^]ÇÇ≠¨≠Çà]^]Ç]ÇÇ≠¨≠DzàÇ≠¨≥¨¨VVOVUVOVUUOV˛U
  2647. V++*U+1*1++*U+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*++V2^]^W]W^WÇÇ≠¨≥Ç^3]W]3ÇÇà]]3]3]3]3]W]3]W]W]3W2W3]WÇà≠Å]]≠à≠àà3W3W2]3W233]2WWà¨à ]]3]WW2W3W2W2W2W2W2W3]2W2]Ç≠≠≥ÇW2˛]W]233]]àà≥¨¨]]3]W]3˛^_W]W^W]W]3Çà≥¨àW]3]W^Ç≠¨¨W]W]W]]≠¨≥àÇ]]W]]ÇÇàÅÇ]^W]]Ç]^]àà¨à¨ÅÇÇ≠¨¨ÅÅOUOUOUOUOUOU+UOU*+*+*+*+*+*++*1*+*1*+*1*+*1*+*1*+*1*+*1*+*1*+*1*+*1*+*1*+*+*U2]W^W^]^W^^à¨◊≠à3^W^W^^àÇÇ]]W^]]W]W]W]W]W^]]3W3]3^Ç≠¨àWÇà≥¨≠Å]3]2W3]3W3]W]3]Å≥¨àWW3]2]W]3]3W2]3W2]3]3]3]]≠≠≥àà3WW]W]3W3]]àà≥¨≠Ç]W]W]3]]Ç]^]]W]W]3]]¨¨≥àÇW]W]]¨¨≥àÇW]W^]ÇÇ≠àà]Ç]]WÇ]Ç]Ç]^]^]Ç]Ç]^]≠¨≥¨à]à¨≥¨¨ÄVO    UOVUUOVUUO˛U +1*+*1*+*1*+*F*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*++VW^3W]^W]WÇÇ≠≠≥]W3]3W3˛Çl]^3]W]3W3]3]3]3]W]2W3W2WWàà¨Å]]≠¨≠ÇÇ3W232W2W2W2W3]2]Ç≠àÇ3]232]2W3W,323,32W2W2W]à¨≠Ç^3W2W3W232WWàà≠à¨]]2]3]2W2˛^8W]W]W]3W3ÇÇ≠¨à]]3]3]Ç≠àà]]W]3]W^]Ç]]W]W]W]W]W]W]W^W]]^WÇà˛¨#Ç^Ũà≠ÇÅOU+UOU+UOU+UOU+O*+*+*+*+*+*+M1*+*1++*1*+*1++*1*+*1++*1*+*1++*1*+*1++*1*+*1++*VV]]^W^]^]^^≠≠◊≠àW]W^W^^àÇÇ]^W˛]^W]W]W]3]W]3]W]3]WÇÇ≥≠àWǨ≥à≥Ç]3]3W3]3W3W3]3]WÇà≥ààW]3W2W3]3]W]2W3W2]W]WÇÇàÇÇ]]3]W]3]3]]àà≥¨≠Ç^W˛]fW]3W]â^]WÇ]Ç]^W]]àà≠ÇÇW]W^]àÇàÇÇ]Ç]]W^]^]Ç]^W^]Ç]Ç]^]Ç]Ç]Ç]Ç]àǨ¨◊¨¨]à¨≠¨≠ÅVOVUUOVUUOVUUOVOU*1*+*1++*1*F*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*++WW^W^W]W]WÇà≥≠≥Ç]3W3]W˛ÇlW]W]3]3]3W3]3W3]2W3]3]3]]àà≠]WW≠à≠àà233W,W3W232W232W2Çà≥à]2W,32W2W3]232W232W2]3]2W3]3]W]2W2]WÇà≠àà]]2]W]W]3W2˛^3]]Ç]]W]W]]Ç]^W]3W3]W]W˛]!W]3]W]W]]ÇW]W]]^]Ç]Ç]Ç]Ç]^WÇÇàǨ¨≠˛Ç ¨à≠¨ÅOUOU+UOUOUOU+UOU++*+*+*+*+*++*+*+*1*+*+*+*1*+*+*+*1*+*+*+*1*+*+*+*1*+*+*+*+*12^]^W^]^]ÇÇ≠≠◊≠àW]W]3^Çà]^W]W]3]3]W]W^W]]Ç]Ç]àÇÇ]àÇàÇÇ3^à≥¨≠]]3W2WW]3W232W3]2WWà¨≥à^3W2W2W3]3]2W3]3W3]3W2]3W2˛] W]3]]àà≥àà]]3˛]W]W]3]]à]]W^]ÇW]W^]^]^˛]O^W]W^]]WÇ]^W]W]W^]^]Ç]^]Ç]ÇÇ≠à¨ààÇÇ]ÇǨà≠à¨àà]ÇÇ≠¨≠ÅVOUOVUUOVUUOUOUOU++*+*+*1*+*F+*+*+*++*+*+*++*+*+*++*+*+*++*+*+*++*+*+*++W]^]]3]W]]àà≥≠≥]]3]3W3˛ÇlW]3]W]3]W]W]]^W^]à]àÇà]Ç]^W]2W]¨¨≠ÇÇ23232W2]23,32W2323Wà¨≥Ç]3]232W2W232W2W2]2W,32W,32]2W2]Wàà≠àà]W2WW]2W3]3W2˛^_W]W^]]2W3]W]3]3]W]3]W]W]]Ç]]3]3]]Ç]Ç]ÇW]]^]¨¨≠ààÇà]]WÇÇ≠¨¨]ÇW]]àà≠àÅUU+UOU+UOU+UOU+U+O*+*+*+*++\1*+*1*+*1*+*1*+*1*+*1*+*1*+*1*+*1*+*1*+*1*+*1*+*V]^]^]^]^]ÇÇ≠≠◊¨à]]W^]^Ç≠Ç^]Ç^à^àÇàÇàÇà^à]Ç]Dz]MÇ]]W]3W3à¨≥à≠Ç]2]W]3]W]2]3W2W3W2]]¨≠≥àà]]W]3]3]2]W]2]W]3W3]3WW]3]2]]≠≠≥àà]]3]W˛]W]3]W]]â^^WÇ^ÇW]W]W^˛]QÇ]^W^]^]àÇàÇà]]WÇ]àà≠àà]Ç]Ç]Ǩ◊¨≥àà]Ç]ÇÇ≠¨≥àà]^Wàà≠¨≥ÅÄUVUVUVUUOVUUOVUU+U*+*1*+*1*F*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+]W]W^W]W]]àà≥¨≠Ç^3]W]W˛Ç W^]Ç]Ç]Ç]Ç]Ç˝]\W]3W2W2W2W23,]]≠à≠àÇ233]2W2W2W2W232W232]]à¨≥àà]^]]W]232W2W2]2]2W2W2]232W]à¨≥àà]]232]W]3W2W2]W˛^'3]]à]]W]3]WÇ]Ç]à]]W]]ÇǨÇà]^W]]ÇÇ≥¨¨]^]Dz]4≠¨≥àÇ]^]Ç]ÇÇ≠¨¨ÇÇW^^¨à≠¨¨VUOUOUOUOUOUOUOU+O*+*+*+*+*++*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*V3^W^W^]^]àà≠¨≥¨à]^W]W^Çà]^]Ç]^W]3]W]3]3]3]WW2]3W2W3]2WWà¨≥¨¨]]2W3]WW2W3W2]3W2]31W2]]à≠◊≠≠ààÇÇ]]3W2]W]2]W]2]3]W]2]]≠≠≥àà]]W]3]W]WW2˛]$3]]^]^W^^à]^W^]^Ç≠à¨Çà]]WÇÇ≠¨¨ÇÇ]^]^]˛≠<àà]Ç]à]Çà◊¨¨]Ç]Ç]Ç^à¨≥¨à]Ç]àà≠¨≥ÅÅUUOVUUOVUUOVUUOU+U*+*+*+*+*,**+**+**+**+**+**+**+**+**+**+**+˛*+W3]3]W]W]]àà≠¨≠]]3]3WWàÇ^3]3]3W2W3W2W232W3]232W,32W232]]¨¨≠Ç]23232W22,32W23,32W,2,WWàà≥¨≠àà]^]^W^]ÇWW2]2W2]2W2]]àà≠ÇÇW]2]3]2]2W;2W3]2W3^]^3W3^^ÇW]W]Wà¨≠ÇÇ]]3]]àà≠ÇÇW]]^]^Ç≠àà]]W^]^]¨¨≥Ç^]^˛]*ÇŨ¨≠ÇÇ]Ç]àà≠¨àVV+UOU+UOU+UOU+U+U*+*+**+*+*+*1*+*+*+*1*+*+*+*1*+*+*+*1*+*+*+*1*+*+*+*1*+*VW^]^]^]^W^Ç≥≠≥¨à]]W^3]à≠]]3]W]W]W]W]W]3]W]3]3]3W3W2]W]Wà¨≥à¨]]2]3W2W2W2]332W3]2W,32]Wà≠◊≠≥àà]àÇ≠à≠ààW]3˛]d3]3]Ç≠¨≠àà]]W]W]W]WW2]W]3]W]]à^^3]]Ç]^W]WÇà≥¨à]]WÇ]ÇÇ≥¨à]Ç]Ç]Ç]à¨≥àà]Ç]Ç]àà≥¨¨ÇÇ]Ç]Ç]àà≠¨≠ÇàÇàÇ≠¨≥àÅV˝UVUUOVUUOVUUOU*+*1*+*+**+**+*+*+**+*+*+**+*+*+**+*+*+**+*+*+**+*+]W]]^3]W]Wà¨≥¨≠]]3]3]WààÇ3]3]3W3]3]3W2]3W2]3W2W23,3232W]≠¨¨Ç^2323,3232W23,22]2WJ2232W]≥≠≥¨àW]W]]Ç]Ç]]2]W]2W3]]àà≠Ç]W]2]3]2]W]232]2WW]3]]^]]W]3W3]W]WਨÅ]3˛]WÇà≠ÇÇ]]W]W^Ç≥¨¨]]W˝]4àǨÇÇW]]^W^]Ç]àà¨ÇÇ]ÇÇ≥¨¨ÅVOU+UOUOUOU+UOU+U*+**+*+*+U+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*V]^]^]^W]3Çà≥≠≥àà]^]]WÇà≠]]W]3]3W3]3W2˛]83]W]3]3W2W3W2W3Çà≥àà]]23,32W2W23,32W2]33,32W2à≠≥≠◊ÇW2]3]3˛]W]W]2WWÇÇ≠¨≠ÇÇ3W3˛]2]W]3W3W3]W^W]W^]à]]W]3]W^]]Ç◊¨à˝]<W^Ç≠¨¨Å^W]W]Wà¨≠ÇÇ]]WÇ]^]àÇÇW^]Ç]Ç]^WÇÇ≠¨≠ÇÇ]¨¨≥à¨VUOVUUOVUUO˛U OVOU*+*+*+*+*h**+**+**+**+**+**+**+**+**+**+**+**+]W]3]W]3]]¨¨≥àà]]3]3]WàÇ^3]3]3W2W2W232W2W3]232W2W3]332W]˛¨+Å]23,2,323232323232W,2,W23]≥¨≥≠à23232W2]2W2]˛2YÇǨà≠]]2W2W2]2W2]2W2W2]W]WW2W3^]]W]3W2W3W3à¨≠Å]3]3]WÇǨÇÇ3]W]3]]Ç]Ç]]3]W]W]W^W]W]]^W]W]]àà˛¨!]^Ç≠à¨Åz+UOU+UOU+UOU+UOU**+**+*K1*+*+*+*1*+*+*+*1*+*+*+*1*+*+*+*1*+*+*+*1*+*+*+*V^^W^]^W^]Çà◊≥≥Çà]]W^W]Ç≠]]W˛]e3]W]3]W]3]W]3^]]2]]ÇÇà]W3Ǩ≥à¨]W,W2W2]3W2W3]2W2W2W2W2]3à≠◊≥◊à^3]2W3]2]2W2]WÇà≥≠≠ÇÇWW2]3W2]WW2]W]]Ç]^W]˛W^^Ç]Ç]]W]W]W]Ç≠àà]]W˝]˛à]^]^]^˛](Ç]Ç]^]^]^]^]^]Ç]Ç]^]à^àÇ≠¨≥àà^¨¨≥¨¨VVUVUV˛UV˛U
  2648. VUUOU*+*+*+*1**+˛*+**+˛*+**+˛*+**+˛*+**+˛*+**+˛*'+*2Ç]]3]3]W]Wà¨≥àà]]3W3W3àà]2W3]3W3]232˛]3W2WÅàW32]]≠àÇ23]¨¨≠àDz,XW232]23232W2322,W2W23]≥≠≥≠àWW22,3,323,3WàÇ≠¨≠]]2W2W2W,33W,32]]^]]232W2]]^]]W]W]W]W]W^]]W]˛W]3]]^W˛]CW]W]W]]^]]W]W]W^W]]^]Ç]^W^]à]àà≠¨¨]^Ç≠¨≠ÅÄOUOUOUOUOUOUOU+U++**+**++*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*V]Ç]]W^W]3Çà≥≠≠àà]^W]3]à≠WW3]3]]ÇW]2W]¨]W2]]¨à^23Wà≠≥]33Çà≥¨¨]W,32]2W2]232W2W2W2732]232à≠≥≠◊à]2W23,W232W]àà≥¨à]]2W2W2W2W3]3W2W]Ç]]3W2W2]]˛^W]]Ç]]W^]]W]W]W^W]W]W]W]]^W]]^]^˛];Ç]^]Ç]Ç]àÇàÇàÇÇ]Ç]àÇ≠à≠à≠àÇ]à¨≥¨¨zUOVUUOVUUOVUUOVUU*+*+*+*+***+˛***+˛***+˛***+˛***+˛* **+**++]W]3˛]3W]¨¨≥àà]]W]2W]àÇ]2]2WW˛Ç)332ààÇ232]ÇàW22]]≠àW,W]¨à≠Ç]22,223,2,3,2,3˝2R,W232]≥¨≥≠à2322,223,W]àà≠ààWW22,323,32]2W2W3]WW232W2W2]]^WW3^]]3WW]3]W]3]W]3]W]W]W˛]>W]W]W]W]]^]^]Ç]ÇǨààÇà]Ç]^]à¨≠àà^à]ÇǨà≥¨Å+UOU+UOUOUOU+UOU++*+˛**+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*++V]^]^]Ç]^WÇà◊≥≥àà]]W]3^à≠]W3]WÇÇ≠Ç]2]à≠]]3]]¨à]2W]à¨≥]WWàà≠àà]W2W232W2W2W232W2327W2W232à≠◊≠◊à]2W23232]Ç≠¨≥ààWW3W,32W2]3W2]W]W^]]3]3W2]3W3˛^ 3]^Ç]]W]W^]]W˝]/^W]]Ç]Ç]àÇÇ]^]ÇÇ≠ààÇà^Ç]ÇǨ¨≥àà]à^à]àà≠¨≠Çà^à^àà˛≥ÄVUVUVUVUVUUOVUVUU++*+*+*+***+**+**+**+**+**+**+**+**+**+**+˛*?+2^W]]^W]3]]≠≠≥àà]]3]3]3àà^232]]ààÇ233ààÇ2]2]ÇàW32]]≠à]2]]¨à¨Ç]˛2
  2649. 3,2232323,2,3,˛2B,2,2]≥≠≥≠àW323223]àà≠ÇÇ22,W22,W232W,32]W]W]2W2]2W2W,W]^3W3^]^]]W]W˝] ^]]W]3]]àÇà]Ç]]W]]¨¨≠ÇÇ]ÇW]]ÇÇ≠¨¨˛W$Ç]^]àà≠àà]Ç]ÇŨ¨≥¨ÅOUOUOUOUOU+UOUOU+O˛*+**+a+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*++VW^]^]^W]WÇà≥≠≠Ç^3]W]3]Ç≠]]3]3ÇÇà]W2]à≠]W3^]≠àÇ]Ç]˛àBW]]àà≥ààWW23,3232W23,32W2W23,3232à≠≥≠◊à]2]2W,32]Ç≠Ç]2W23,W2W2W232W3˛]W]2]W˛]#3]2]W^]^W]]àÇà]^W]]àà¨Çà]^W]]à¨≥Ç^]Dz]?àà≥¨¨]^]Ç]Ç]¨¨≥àÇW]]Ç]ÇÇ≠¨≠Çà^Ç]àà≠≠≥ÅVOVUVOVUUOVUUOVUU++*+*+*+*˛*˛*˛*˛*˛*˛*˛*˛*˛*˛*˛***12]W˛]E3W3]]¨¨≥àÇW]W]W]WàÇ]2]3]]àÇÇW]WàÇÇ3]WÇ]Ç]]W]]ÇWW2]]¨¨≠]],2,2,2,2,3,2,3˛2m3,2,3,2]≥¨≥≠¨WW2W,2,32WW],2,222W2W22,32]3]2W232]2]2W2W3]3^]]2]]Ç]]W]3Çà≥àà]^W]W^Ç≠¨àW]W]W]]àà¨Ç^3]]^W^Ç≠¨¨]]W˛]$WÇà≥àà]ÇW]]àà≥¨ÅUUOUOUOU+UOU+UOU++**˛**+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*++]]^W^]]3^]àà◊≥≠Çà^Ç^à^àà≠]]WÇ^àà≠àà^àÇà]Ç]^]Ç]]2W3]W]23Wà¨≥ààW32]232W23232W2W2W2L323232Ç≠◊≥◊àÇ232W2323,32W2W,32]2]]W2]]^W]3W2W3]W]W]3]3]W^^ÇW]W]W^]]W]Ç≠¨≥Ç]W^˛]I¨≠◊àà]^]Ç]Çà≥¨¨]^]^]Ç]à¨◊¨ÇWÇ]Ç]ÇÇ≠¨≥àà]^]ÇÇ≥≠≥ÅÄUVUVUVUVUVUVUVUVOU*+*+*+***+**+**+**+**+**+**+**+**+**+**+˛*,+2^3]W]3WW^]¨¨≥àà^Ç^Ç^Ç^àÇ]2]W^]^]Ç]]WÇ]]WW3˛]22,3WÇ]W,W]≠¨≠Å],223,223,2,32323,2,3,22]≥≠≥¨àWW,223,2,222W23,32W2]2W3]3W2W232W2]232]2]2W3^]]2W2W3]3]WÇÇ≠àÇ3W3]3]Ç≠¨à]]W]W]]à¨≥ ÇÇ]]W]W]]≠¨¨˛],Ç]^]àÇàà¨ÇÇ]Ç]à¨≥àÅVVOUOUOUOUOUOUOUOU**+**+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+˛*s++WW^W]W^W]Wàà≥≠≥àà^à^Ç^àÇàW]3W3]WW2W23]àW32]]àÇ]23Wà≠≠WW3à¨≥¨àWW,2,W232W232W232W2323,2,à≥≥≠◊à]2W2W2W23,32W2]2W,32W2˛] 3W2W2]232]3W2˛] W]3W]Ç]]3]3]W]W]]≠¨≠Å]W]W]]à¨≥Ç^W˛]9WÇÇ≠¨¨ÇÇ]Ç]]Wàà≠Çà]^]à]à]à]àà≠ààÇàà≥¨≥ÅÅUVUUOVUVOVUUOVUUOU˛*+*+*˛***˛***˛***˛***˛***˛*D**12]3]3W3]3]^≠¨≠à≠Çà^Ç]Ç^ÇWW2W23W^WW22,ÇÇ]22]Åà22,]Ç≥à]2]]¨¨≠]]22˛22,2,2,2,˛2t,2,22]≥¨≠≠¨W222322,2,2,223,2,32]W]2323,22W,32W232]2W2W3^]]2W2W2W3]2]Ç≠àÇWW2]3]]¨¨àW]W]W]]Ç]ÇÅÇW]W]3]]Ç]^W]W]]Ç]Ç]^]˛¨!ÇàÅàà≥¨¨VVOU+UOUOUOU+UOUOU*****+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*++WW^W^]^W^]àà◊≠≥¨≠àâÇâàâÇÇ3W3]3Çàà]W2]à≥]32]]¨Ç],W]à¨≠]W]à¨≥àà]]232W,3,2,323232W2W22,22Ç≠≥≠◊àÇ22,W2W232323232W2W2˛]2W2]232W2]3]3]W]W]3W3˛^W˛] 3W3]W]]à¨≠]]3˝]Iàà¨ÇÇ]]W^]^]Ç]Ç]^W]W^]^]^W]W^]à]à]Ç]àà≥¨≠ààÇ≥≠≥àÅVUOVUVUVUVUVUVUVUU*+*+*+***˛*˛*˛*˛*˛*˛*˛*˛*˛*˛*
  2650. ***22W3]W˛]3^Ç≠≠≥¨≥à≠à≠à≠àà]]232W]àÇ]˛2¨à]232]Çà˛2 ]]≠à]2]]¨à¨Ç]˝2 ,2,22,2,22,˛2,2]≥¨≥¨àW3,,3˛23˛283,22]W]3323232W23,W2W2W2]2W2W2WW^]W2]2W2W2]W]]Ç]]2]W]3]WÇ˝]3]W]3]W¸]4W]]^]]W]W]]Ç]^]^W]]àà≠¨à]Çà≥¨¨ÅV+UOUOUOU+UOUOUOU***˛***+*+*+˛*+*+*+˛*+*+*+˛*+*+*+˛*+*+*+˛*+˛*12W3^W]]^˛]àà≥¨≥¨≠à≠à≠¨≥ààWW2W3˛à WW2]à≥]22]]àÇ]2]]à¨≠W33Çà≥ààW3,2,˛2˛2X,3232]3]3]3W3à≠≥¨◊à]22,223232W2W232]W^WW,32W2]2W2W2W2W3W2W2W2W3]]^3WW^]]3]W]W^W]3]W]W]W]W˛]+W]W]W]W]3^]]W^]Ç]Ç]Ç]Ç]à]Ç]^]Ç^àà≠¨≠ààÇ≠¨≥¨Å¸U VUUOVUUOVUVUU˛*+˛*]************************22W3]3]3]3]]àÇà]Ç]]W^Ǩà≠]W232W]à]W232àà]2WÇÇà˛WÇÇ≠Ç]2W]˛¨]W,˛2 ,2,3,22]]Ç]Ç^à^àà≠à≠¨¨WW222,2,¸2,W]]23˛,22W2W,22W˛243,22W232W2^WW2]]^3W3]3]W]2W3]3W3]W]W]W]W]3]W]3WW]3]W^˛]^]Ç]àÅÇ]^W]]àà¨à¨Çà]àDz¨ÅV+U+UOU+UOU+UOU+U++***@+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*12]]^3^W]W^W^]Ç]^]^˛W    à¨≠ààWW3]]˛àl]]WÇà≠]]WÇ]àÇ]W^]Ç]Ç233à¨≥¨¨]]W^]Ç]Ç]]2W,22]]àÇàÇàÇ≠à≠¨≥≠◊ààWW23,22W232]3WW]332W232W2W232W2]2W232W2]3W2]]^3]W˛^W]W^]]W]W˛] W]WÇ]^]Ç]Ç]^˛]˛Ç8]Ç^à]Ç]ÇÇ≠à¨à¨ÇÇ]Ç]àà≥¨≠ÇàÇàÇ≠¨≥¨¨VUOVUVOVUVUVUUOVUU*+*ˇ*****˛***˛***˛***˛***˛*0***V3]3]3]3]3]3W3]3W3W2]Ç≠àà]]2WWÇÇàÇà]Ç]àÅÇ]^W˛]42W2W2322,W]≠¨≠ààÇàÇâà≠à≠Ç]22,22]]Ç]^W]]àà≠¨≥¨≠Å]22,,˝232]WW,2223,223,2,32]2W,2,32W2W232^3]2W3^]]3W3]W]W]W]W]3]WÇ]Ç]Ç]]W]W]Ç≠ààÇà]ÇW]]à¨≠ààÇà]^]Ç]¨¨≠ÇÇ]à]àà≠¨≠ÅÄ+UOUOUOUOUOUOUOU++**˛***+˛*+˛*+˛*+˛*+˛*+˛*+˛*+˛*+˛*+˛*+**12]3^W]W]W]3]3]3]3W3]]àà≠àÇ3W3]W^W]W]W]WÇW]3]]Ç]]232Ç]],22Çà≥ààÇÇ]Ç]à]à≠≥Ç],3232]3W2W2]Ç≥≠≥≠◊¨àW2,22,22]W]3]2222W2W2323232,]W]2W23,W3W232]W^]]WÇÇà]ÇW]WÇÇàÇàÇÇW]]ÇÇ≠àà]^˛]^]¨¨≥àÇ]à˛]àà≠¨≠àà]Ç]^]àà≥¨¨Çà]àਨ≥¨¨V˛UOVUUOVUUOVUUOzÄÅÄÅÄÄVZ************************22W3W3]3]3]3]3]3W2W3]Ǩàà]W2W232W,223,]W322˛]022WÇ≠Ç33]¨ÇÇWW23,32W]≠≠¨W2,2,2,,22àà≥¨≥¨≥ÇW˛2 ,22WW]222,2,¸2",223,22W22,3,22]22,22^]]2]]à]ÇW]3]]˛¨ÇÇW]W]]à¨≥Ç]2WW]W^Ç≠¨àW˛]53]]àà≠àà]]W]W]]¨à¨àà]Ç]àǨà≠ÅÄOU+UOUOUOU+UOU+UU´´÷––´´+˛*+˛*+˛*+˛*+˛*+˛*+˛*+˛*+˛*+˛*+¸*
  2651. 12]W]3^W]3]W]W˛]93]3]]à¨≠ààWW2W2^Ç^232]Çà32,]]à]W2]¨¨≠W22à¨àWW23,2,WW¨≠◊à]˛2W222,2]Ç≥≠◊≥◊≠≥]WW]]^]Ç]]2W˛,/W232W2W2W2W2W2W2]232W2]W]232]]^W]W]]^W]W]]àà≥àÇW˝]IÇà≥¨¨WW3]W]]≠≠≥ÇÇ]^W]]ÇÇ≠¨≠ÇÇ]^W^]àà≥¨≠ÇàÇÇ]àà≠¨¨ÄVUVUVUVUUOVUVUUOzÅ÷÷◊–◊–Z************************V3]3]3]3W3]3]3]3W2W2]Ç≠àà]]23,3]¨]W,23àà]22˛Ç2,,]Ç≠à],WÅ≠^3,,,,Ũ≥àÇ22˛2,2,2àà≥≠≥¨≥¨¨]ÇÅàÇÇ]]22,22,3˛2W˛232323,˛2k,32W2W23,22^W]2W2W232W3]]¨¨àWW2]2]Wà¨≠Ç],W3]3]à≥¨¨]]W]W]]àà≥¨à]]W]W]]à¨≥àà]Ç]^Ũà≠àÅUUOUOUOU+UOUOUOUUÄ´÷–÷–÷˚*+˙*+˙*+˙*+˙*+˚*:12]3^]]3^W]W^W]3]3W2W]àà≠Ç^3W232à¨Ç232]à≠W22]Åà]]22Wਨ33W˛à322,,WÇ◊≥≠W2¸2˛,2,WÇ≥≠≥≠◊≠≥¨≥à≠àà]W,2,22322,W232W23,32W2323,W2]2]23,W2WW^WW2W3W2W2WWà¨≥àÇWW2]W]Ç≥≠¨WW3]W]]¨¨◊¨Ç]Ç]^]àÇ≠¨≥àÇW^]]WÇà≠¨≠àà]Ç]àÇ≠¨¨ÅÄUUOVUUOVUUOVUUOzĨ–◊–÷–w***********************+]3W3]3W3W2W3]3]3W232]ǨààWW23,WǨW2,32àÇW2WÇ]]22,]Ç≥ÇWW]à^W2,V,2V¨¨◊Ç]˛2%W2W22,,2Çà≥¨≥≠≥¨◊≠≥¨≠]3,2222,2,˛2,2,2,223,2,W2W22,2,22˛] 232W23232W]≠¨¨]W2W2W3à¨◊Ç]2W3W3]ި9]]W]W]]ÇÅàÇàW]W]3]WÇ]ÇǨÇÇ]Ç]à¨≠ÇÅVU+UOU+UOUOUOU+UOzÄ–´–´–+˛*+˛*+˛*+˛*+˛*+˛*+˛*+˛*+˛*+˛*+¸*
  2652. 1W^W]]^WW3]3]3˛](3]3]]à¨≠ÇÇ]]2]3ààÇ2W2]àà332]Åà]W2]]≠¨≠W23˛à
  2653. W]VÅ]áŨ¨◊––Åá˛ÅàÅÅ˝2W]¨à≥¨≥¨≥≠◊¨◊≠à22,2,322,3˛2*W2W2W23,32]2W232]WW2W232]]à]]2W3]WW2]WÇà◊¨à˛W]W]Ç≥≠≠]]W^W]]àà¨ÇDz]5^]^]Ç]Ç]^W]W^W]]^]à¨◊¨¨Çàà≥¨≠ÅÄUVUVUVUVUVUVUVUVU´œ÷´÷–z***********************+WW]3]W],33]3W3]3W232]Ç≠àà]]2W2]Ǩ]]W]]¨Ç^W]]Ç]ÇWW3]]ÇWW2]Ũá¨Å¨Å¨´¨´–¨÷´¨´¨´˛¨ÅÅ22,,22W3]W]W]Wà¨≥Ç],,,,˛],22,2,˛2,2,3,˛2,32W23,3˛2^]^3]2]2W2W2]WÇÇà]W2W2]WÇ]à]]3˛]W]]Ç˝]7W]W]W]W]W]W]3]W]3]W]Ũ¨≠àà]àà≠ààVUOUOUOUOUOUOUOU+UÄ÷´–´÷
  2654. **+˜*˛*˛*˛*˛*˛*˘*[+**13^W^]]3W3]3]W]3]3W2]]àà≠Ç]3WW]]ààÇ]Ç]ÇÇà]^]à^Ç]Ç]]W]W]VÅŨ´÷–÷–÷–÷–÷–÷¨÷–÷–÷–÷–÷ÅÅV]VV,˛2,˛22]˛≠*ÇW,,WÅ≥ÅW,2,2,323232323232W232W232]233^]]W˛] 2W3]3]]ÇW]W]3¸]W]W^˛]?^]]W]W]]^W]W^W]W^W]W]W]W^W]]à¨≥¨≠àÇÇ≠¨¨ÅÅUUOVUVUVUUOVUUOUU´–◊–÷–***********************+]3]3]3W3W2W3]2W2W2WWÇŨàà3W2]W]W]3]3W2W33,33]3W2]VÅÅ´Å´´¨´–´÷´–¨÷´÷¨÷´–´÷´÷–÷´–¨–4•¨´¨ÅÅ]ÅVW2V,]à≠àà2W]¨¨à2,2,2,2,2,2,2,32322,22W,˛2,W3^3]]^3W2W2W2]2W2]2WW]W]3]2˛]AW]W]3W3]W]3]3]W]3]W]W]W]3]W]W]Ũà¨àà]Çà≠à¨ÄV+UOUOUOUOUOUOU+UÄ––÷¨÷˛*˛*4***+*+*U*+*U+U*U*+*U*+*+********2W^]]W]W]3]W]3˛]3˝]à¨≥Ç]3]W]W]W]23233]˛2%]]Å]ÅÅ´´–´÷–÷–÷–÷¨÷–÷–÷–÷–÷–÷¨÷–÷¨÷–÷–˛÷–÷––´¨˝ÅV]Å≥¨≥àÅV]]à¨≠ÇÇWW2322˝2W232]2W23,W2]2W2W3^]^]˛^W]2]W]3]3]W]W]]Ç]]3˘]&^]]WÇ]^W^]]WÇ]Ç]àÇÇ]^W]WÇǨà≠¨¨Çàà≥¨≥¨Å˛U
  2655. VUVUVUVUVUV˛U•¨÷–◊–!*****+*UOUUÄUzUÄzÄVÄUzUVUU+U˝*****+˛]+W]3]3]3]3W3]233]3]Ç≠àÇ3W2W23]àW233Ç]W2]\´´¨˛´E–´–´÷´–´÷´–´÷´–´÷´–¨÷´–´÷´–¨÷´÷–÷´÷¨÷´–¨–´¨´–´–¨÷´–´¨´´]ÇǨà¨Å]22,22˛2$223,2,22W2W22,W3]3]]^]]2W2]2]3]2]W]W˛]G3W3]W]W]W]]^]Ç]Ç]^W]3]]àà¨ààÇÇW]W]Ç≠¨≠àà]Ç]à¨≠¨¨ÅVOUOUOUOUOUOUOU+Uz¨¨÷¨÷+*U+UOUUVUÄzÄĕĴĴ•´•´•´§´§´Ä•˝Ä3zÄUzUU+U*+*23^]^W]3]W]3]3]3]3]3]]àà≥Ç]2322,à≠],WWÅŨ˛ÅE¨´–œ÷–÷´÷´÷´÷–÷´÷–÷´÷–÷¨÷¨÷¨÷–÷´÷–÷¨÷–÷–÷–÷¨÷–÷–÷–÷–÷–÷–÷–÷–÷¨¨Å¨¨◊¨÷á˛Å]ÅVÅ]ÅV]V]2W2323232W233^]]3˛^
  2656. ]]W]3]]Ç]Ç]Ç]^˛]GàÇà]Ç]^W]]ÇŨààÇà]^W]Wà¨≥¨¨Çà]]W^]à¨◊¨¨]^]Çà≥¨≠¨¨UUOVUUOVUUOVUUOUUŨ◊–÷– +UUÄzÄÄ´•´´œ˛´œ•´´œ˛´œ•´•´•˛´7§´´œ´´•´ÄÄUU*U+W3]W]233]2W3]232W2W3]]¨àÇ23,23Ç≠W2VÅÅ´´–˛´œ˛´H–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´÷´–´–´–´–´–¨÷´–¨÷´–´÷´–´÷´–´÷´–¨÷´–´–´¨´¨˝Å]ÅV]2W2222W,WW^˛3,^]^]]232ÇÅàÇÇ]]W]2]Ç≠¨¨ÅÇWW3]]à¨≥Çà]]W]W]]≠¨¨˝])W]]ÇÇ≠¨≠Å]3W]àà≠à¨ÅV*UOU+UOUOUOU+UOzÅ÷¨÷¨÷´•´•œ´œ´÷œ÷œ÷œ–´÷´œ´–´–´÷œœ´÷´œ´÷œ÷œ÷œœ´œ´´§´ÄÅ3^]]3]3]3]W˛]3]W]3]]à¨≠]W3W2]]˛¨Å´´–´–œ÷–÷´÷´–´÷–÷¨÷¨–´÷–÷´÷–÷´÷–÷–÷–÷´÷–÷¨÷–÷¨÷–÷–÷–÷¨÷–÷–÷–÷¨÷–÷¨÷–÷–÷–÷–÷–÷–÷–÷–÷–÷¨÷¨–´–¨¨´¨á¨ÅàÅáÅÅ]Ç]]2WWÇ]]W]2]Å≥≠¨]^W]W]1]¨≠◊àÇ]Ç]^]àà≥≠≠àà]ÇÇàÇ≠≠◊¨à]^]àà¨à≠¨≥¨à]]WÇÇ≠¨◊≠¨˝UOUOUOUUVUzUÄÅ÷÷◊–◊–
  2657. ´–´œ´œ´œ´œ´œ´œ˛´œ˛´œ˛´œ˛´œ•´´œ˛´0œ§´´œ§œ´œÅW3]3]3]2W3]3]W]2]233^Ç≠àÇ2]VÅÅ´•œ´–´œ´œ˛´|–´–´–´¨´–´–´–´–´÷´–´–´–´–´–´–´–´–´–´–´–´÷´–´–´–´÷´–´÷´–´÷´–´÷´–´÷´–´÷´–¨÷´–¨÷´–¨÷´÷¨÷´÷–÷¨÷¨–´¨•¨ÅÇWW2]W]2W3W3à¨◊Ç]2W3]]ÇÇ≥¨à˛WÇ]ÇÇ≠¨≠ÇDz]4àà¨à≥¨¨]]W^Ǩà≠¨≥àà]]3]Wàਨ≥ÅV+UOUUzUzVÄVÄzÄĨ¨÷¨–¨÷–´÷´œ´–´œ´œ´œ´œ´œ´–´œ´–´–´œ´œ´œ´œ´œ´œ´œ´œ´œ™œ´áWW3˛]W]3]W^]]3]332]]ਨá´Å˝´–´–´÷´–´–´–´÷´–´÷´÷´÷¨÷´÷´÷¨÷¨–´÷´÷´÷–÷´÷´–´÷¨–´÷–÷´÷–÷´÷¨÷´÷–÷¨÷–÷¨÷–÷¨÷¨÷¨÷–÷¨÷–÷¨÷–÷¨÷–÷–÷–÷–÷–÷–÷–÷–÷¨÷¨÷¨à]Å]ÅW]]Ç]àà≥≠¨W33KÇà¨à≥≠≥]W3]Ç≠à≠à◊¨à]]W^à≥à≠¨≥àÇW^]àà≥¨≠¨≠àà]Ç]ÇÇ≠¨≥≠¨VUUÄÄ´´–¨–´–´–´÷–÷¨÷–÷´˛´œ•´´œ˛´œ•˛´•´´œ•´´œ´œ´œ•´´œ•´§´§´§´§´§œ§´Å]3W3]3]3W2]3]2W3]2W]àŨ´¨´œ´œ´œ´œ´œ´–´œ´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–/´–´–´–´–´–´÷´–´–´–´÷´–´–´–´÷´–´–´–´÷´–¨÷´÷¨–´¨Å¨˛Å(àǨà≠¨≠Ç]2]]≠à≠à≥àÅ2]]àà≥à≠¨¨]]W]Wàà¨à¨àà˛]*ÇÅàà¨Ç¨àà]Ç]Ç]àà≠¨≥ÅÄUÄĨ´÷÷◊–÷–÷¨÷¨÷´–´–´–/œ´–´–´œ´œ´œ´œ´–´œ´œ´–´œ´–´œ´–´œ´œ´œ´œ™œ´œ´œ´÷´àW˛]3]W]3]W]3]]ÅŨŨ´–´–´÷´–´÷´÷´÷´–´÷–÷´÷–÷´÷¨÷´÷–÷´÷–÷¨÷–÷´÷–÷´÷´–´÷–÷–÷¨÷´÷¨÷´÷–÷´÷–÷´÷–÷´÷–÷´÷–÷´÷–÷¨÷–÷¨÷–÷¨÷–÷¨÷–÷¨÷–÷¨÷–÷¨÷–÷f¨÷–÷–÷–÷–÷–÷¨÷¨÷¨÷¨÷¨◊¨¨ÅÅ]àà≠à≠à≥ÇÇ]àÇ≠à≥¨≥ààÇàÇàà≠à≠¨≠à≠à¨à≠à≠à≠à≠à≠à¨à≠à≠à≥≠¨Å´¨÷–÷–÷–÷–÷œ÷–÷´÷–÷´÷œ
  2658. ´œ´œ´œ•´´œ•´´œ˛´œ˛´œ´œ´œ•´´œ•´´œ´œ´œ´œ´–´÷¨¨]]3]˛3    ]W]WÅ]ÅÅáÅ˝´œ´œ´œ´œ´œ´–´–´–´–´–´–´–´–´÷´–´–´–´–´–´–´–´÷´–´–´–´–´–´–´–´–´–´–´–´–´–´÷´–´–´–´–´–´–´–´–´–´–´–´–´–´÷´–´–´–´÷´–´÷´–´÷´–´÷´––÷¨÷–÷´ ÷¨÷¨–¨¨´¨Å¨Å˛¨à˛¨ ÅàÇàÇàà≠ààÇàÇàÇàÇàà¨à¨à≠à¨à¨Ç¨à¨à˛¨à˚¨≤˛´÷–÷´–´–´–´–´–´–´–´–´–.œ´–´–´œ´œ´œ´œ´–´œ´œ´œ´œ´œ´œ´œ´œ´œ´÷´÷¨÷–÷¨÷–÷¨à˝]W]]ÇŨŨ´–´–´–´–´œ´–´–´–´–´÷–÷´÷´–´÷¨–´÷¨÷¨÷–÷´÷´÷´÷´–´÷¨÷´÷–÷´÷–÷´÷´–´÷¨÷¨÷œ–´÷´–´÷–÷¨÷–÷´÷––´÷œ÷¨÷––´÷´÷´÷¨–´÷¨÷´÷–÷´÷¨÷¨÷–÷¨÷!–÷¨÷–÷¨÷–÷–÷–÷¨÷–÷¨÷–÷¨÷–÷¨÷–÷¨÷¨÷¸¨≠à≠à≠ààÇàǨà≠à¨à≠¨≠¨≥˙¨÷˛¨÷¨÷¨÷–÷¨÷–÷´÷´–´÷´–´÷´–´÷´–´÷´÷´C§´´œ´œ´œ´–´–´œ´œ•´´œ•´•´§´´œ´œ´–´–´÷¨÷¨÷¨÷¨÷¨¨ÅÇ]ÅÅáÅ´Å´•´´œ´œ´œ´œ´œ˛´œ˛´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´¨´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´÷´–´–´–´÷´–¨ ÷¨÷–÷´–¨÷¨–¨–˘¨à¨à¸¨´¸¨+´¨´¨´¨´¨´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–œ´œ´œ´œ´÷–÷–÷–÷´÷´–´–´œ´÷œ÷´÷–÷–◊÷÷–◊–÷–÷–÷–÷¨¨´¨´–´÷œ–´÷œ–´÷´–´÷œ–´÷´–´÷¨÷´÷–÷´÷–÷¨÷–÷¨÷–÷–÷¨÷´÷–÷–÷–÷´÷–÷¨÷–÷´÷–÷¨÷–÷´÷–÷´÷–÷¨÷–÷´÷´÷´÷–÷´÷–÷´÷–÷´÷´÷´÷–÷´÷´÷´÷–÷´÷¨÷´÷–÷´÷–÷´÷–÷¨÷–÷¨÷–÷–÷–÷¨÷–÷¨÷–÷–÷–÷–÷–÷–÷–÷–÷–÷–÷–÷–÷–÷¨÷¨÷¨÷–÷–÷–÷–÷œ–´÷–÷œ÷œ–´÷–÷´÷–÷´÷œ÷´÷´÷´÷œ÷´÷œ–´÷–÷´÷–÷´÷–§œ§´§œ§œ´œ´–¨÷¨÷¨÷´–´–´–¨÷¨÷¨÷¨÷–÷¨÷¨÷´–´–´–´–´¨´–´œ´–´œ´œ´œ´–´œ´–´–´–´–´–´–´÷´–´÷´–´÷´–´÷´–´–´–´÷´–´–´–´÷´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´÷´–´÷´–¨÷´–¨÷´–¨÷¨÷¨÷´÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷´–´–´–´÷´–´÷´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–œ™œ™œ§œ´œ™œ´÷¨÷–÷–÷–÷¨÷–÷–◊–÷–÷–÷¨÷–÷¨÷´–´÷´–´–´–´–´œ´–´–´–´–´÷´–´÷´÷´÷¨÷´÷´÷´÷¨÷´÷–÷¨÷–÷´÷¨÷¨÷–÷´÷¨÷´÷–÷¨÷¨÷´÷–÷´÷¨÷´÷¨÷´÷––´÷–÷´÷–÷´÷¨–´÷–÷´÷´–´÷¨÷´÷´÷´÷´–´÷¨÷´÷–÷´÷´÷´÷¨–´÷–÷´÷–÷´÷–÷–÷–÷´÷–÷¨÷–÷¨÷–÷–÷–÷¨÷–÷¨÷–÷–÷–÷–÷–÷´÷´÷´÷´–´÷´÷´÷´–´÷´–´÷œ–´÷–÷´÷´–´÷´–´÷´–´÷´–´÷œ–´÷´–´÷´–´÷´÷´+§´§´§´§œ§´§´§œ´÷¨÷¨÷¨–¨÷¨÷¨÷¨÷¨÷´–´–´œ´œ´–´œ˛´œ˛´œ´œ´œ˛´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´8–´–´–´–´–´–´÷´–¨÷´–´÷¨–¨÷´–¨÷´–´–´–´–´–´–´œ´–´–´–´œ´–´–´–˛´–´–´–´–´–´–´–´œ´–´–´–´–´–´–´–˛´–´–œ´œ´œ´œ´œ´œ™œ´÷–◊–÷–◊÷÷–÷–÷¨÷–÷´÷´–´÷´œ´–´–´–´–´–´–´÷´–´–´–´÷œ÷¨÷–÷´÷–÷¨÷–÷´÷–÷¨÷–÷´÷–÷¨÷–÷´÷–÷–÷–÷´÷–÷¨÷–÷¨÷–÷–÷–÷´÷–÷–÷–÷´÷–÷–÷–÷¨÷–÷–÷–÷´÷–÷´÷´÷´÷–÷´÷¨÷´÷–÷–÷–÷´÷–÷¨÷–÷´÷–÷´÷–÷´÷–÷–÷–÷¨÷¨÷–÷–÷¨÷–÷–÷–÷¨÷–÷–÷–÷–÷–÷–÷–÷´÷–÷´÷´–´÷´–´÷œ÷´÷´÷´÷´–´÷´–´÷–÷´÷œ÷´÷´–´÷œ÷´÷œ÷´÷–÷´÷œ÷´÷´–´÷´%´œ•œ´œ´œ´œ´œ´–´÷¨÷¨÷¨÷¨–´–´œ´–´œ´œ´œ´œ˛´œ´œ´œ´œ´œ´œ´–´–´–´–´–´–´–´–´÷´–´–´–´÷´–´–´–´÷´–´–´–´–´–´÷´–´–´–´–´–´–´–¨÷´–´÷´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´÷´–´–´–´÷´–¨L÷´–´–´–´–´–´–´–´–´–´–´–´–´–´÷´–´–´–¨÷´–¨÷´–¨÷´÷¨–´–´–´–´–´œ´–´–´–´œ´–´–´–´œ´–˛´ –´–´–´–´–´œ´–´–´–´–´–´–´–´œ´–´œ´––´÷´–´÷´–´÷–÷¨÷–÷–÷–÷¨÷´–´–´œ´œ´œ´–´œ´–´œ´–´–´÷´–´÷´÷´÷–÷´÷–÷¨÷–÷¨÷–÷¨÷–÷´÷–÷¨÷–÷´÷¨÷´÷¨÷´÷–÷´÷–÷¨÷¨÷´÷–÷´÷¨÷´÷–÷´÷¨÷´÷–÷´÷´÷´÷–÷´÷¨÷´÷–÷´÷–÷´÷–÷´÷–÷´÷¨–´÷¨÷´÷–÷´÷¨÷´÷–÷¨÷¨÷´÷–÷´÷´÷´÷–÷´÷–÷´÷––´÷–÷¨÷–÷¨÷¨÷¨÷–÷¨÷–÷¨÷¨–´÷´–´–´–´–´–´÷´–´–´–´–´–´–´–´–´–´÷´–´÷´–´–´–´÷´–´÷´–´÷´–´÷´–´÷´–´´–´–´–´÷´–¨÷¨÷¨÷¨–´–´œ´œ˛´œ˛´œ´œ´œ´œ´–´¨´–´–´÷´–´–´–´÷´–´–´–¨÷´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´8–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´¨´–´–´÷´–´–´–¨÷´–¨÷´–´–˛´–˛´œ˛´–´–´–´œ´œ˛´œ˛´–´œ´œ˛´–´–´–˛´ –´œ´–´œ´–´œ´œ˛´–´–´–´–÷´÷¨÷–÷–◊÷÷–◊–÷¨÷œ–´÷´–´÷´–´÷´–´÷–÷¨÷–÷¨÷–÷–÷–÷–÷–÷–÷–÷–÷–÷¨÷–÷–÷–÷–÷–÷¨÷–÷–÷–÷¨÷–÷–÷¨÷¨÷–÷¨÷–÷¨÷–÷¨÷–÷´÷–÷´÷–÷–÷–÷¨÷–÷¨÷–÷–÷–÷¨÷–÷´÷¨÷¨÷–÷–÷¨÷´÷¨÷¨÷–÷¨÷–÷´÷–÷¨÷¨÷¨÷–÷–÷–÷¨÷–÷¨÷–÷´÷–÷¨÷–÷¨÷–÷¨÷–÷¨÷–÷–÷–÷¨÷–÷¨÷–÷–÷–÷´÷´–´÷´–´÷œ÷´÷´–´÷œ÷´÷´–´÷–÷´÷´–´÷œ–´÷´–´÷´–´÷´–´÷´÷´÷´–´÷œ–´÷œ÷´÷–´–´–¨÷¨÷–÷¨÷¨÷´–´–´–´–´–´–´–´÷´–¨÷´÷¨÷´–¨÷¨÷¨÷¨÷¨÷¨÷¨÷´–¨÷´–¨÷´–¨÷´÷¨÷´–¨÷´–¨÷´–¨÷´–´–´–¨÷´–´–´–´÷´–´÷´–´÷´–´–´–´÷´–´–´–´÷´–´–´–´÷´–´–´–´–´–´–´–´–´–´÷´–´÷´–´–´–´–´–´÷´–¨÷´–´÷´–´–´–´÷´–´÷´–´–´–´÷´–¨÷´–¨÷´–¨÷´–¨÷´–´–´œ´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´œ´–´–´–´œ´–´–´–´–´–´–´–´œ´–÷¨÷–÷¨÷–÷–÷–÷¨÷¨÷´÷–÷´÷–÷¨÷–÷¨÷–÷¨÷–÷¨÷–÷¨÷–÷¨÷–÷¨÷–÷¨÷–÷¨÷–÷¨÷–÷¨÷–÷¨÷¨÷¨÷–÷¨÷–÷¨÷–÷¨÷–÷–÷¨÷´÷–÷¨÷–÷´÷¨÷¨÷¨÷´÷¨÷´÷–÷¨÷¨÷´÷–÷´÷¨÷´÷–÷´÷´÷´÷–÷´÷¨÷´÷–÷¨÷–÷¨÷¨÷´÷¨÷¨÷–÷¨÷¨÷¨÷¨÷´÷–÷´÷¨÷´÷–÷¨÷–÷´÷–÷¨÷–÷¨÷–÷¨÷–÷´÷–÷–÷––´–´–´÷´–´÷´–´÷´–´÷´–´÷œ–´÷´–´÷´–´÷œ÷´÷´–´–´–´÷œ–´÷´–´÷´–´÷œ–´÷´–´÷´–´´–¨÷´–¨÷´–´–´–´–´–¨÷´–¨÷´–¨÷´–¨÷¨–¨÷´–¨÷´–¨÷´–´÷´–¨÷´–¨÷´–¨÷´–¨÷´–¨÷´–¨–´–¨÷´–´–´–´÷´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–c´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´÷´–´–´–´–´–´÷´–´–´–´–´–´÷´–´–´–¨÷´–´÷´–´÷´–´–´–´–´œ´œ´œ´–´œ´–´œ´œ˛´2–´œ´–´œ´–´œ´–´œ´–´–´–´œ´–´–´–´–´–´–´–´œ´–´œ´–´–´–´œ÷–÷¨÷–÷–÷–÷¨÷–÷–÷–÷–÷–÷–÷–÷¨÷–÷–÷–÷¨÷–÷¨÷–÷–÷–÷–÷–÷¨÷–÷–÷–÷–÷–÷–÷–÷–÷–÷¨÷–÷¨÷–÷¨÷–÷–÷–÷–÷–÷¨÷–÷¨÷–÷¨÷–÷–÷–÷¨÷–÷–÷–÷´÷–÷¨÷–÷¨÷–÷´÷–÷´÷–÷¨÷–÷´÷–÷–÷¨÷¨÷–÷¨÷–÷´÷–÷–÷–÷–÷–÷¨÷–÷¨÷–÷–÷–÷´÷–÷–÷–÷¨÷–÷–÷–÷–÷–÷–÷–÷¨÷–÷–÷––´–œ÷´÷´–´÷´–´–´–´÷´–´÷´–´÷´–´–´–´–´–´÷´÷´÷œ÷´÷œ÷´÷´–´÷´–´÷œ–´÷´–´÷–÷´÷´¨÷¨–¨÷¨÷¨÷´–¨÷¨÷¨÷´÷¨÷¨÷¨÷´–¨÷´–¨÷´–¨÷´–¨÷¨÷¨÷¨–¨÷´–¨÷´–¨÷´–¨÷¨÷¨÷´–¨÷¨–¨÷´–¨÷´–¨÷´÷¨÷´–¨÷´–¨÷´–´÷´–´÷´–´–´–´÷´–´–´–´–´–´–´–´–´–Y´–´–´÷´–´–´–´–´–´÷´–´–´–´–´–´÷´–´–´–¨÷´–´–´–´–´–´÷´–´÷´–´÷´–¨÷´–¨÷¨–¨÷´÷¨÷´–¨÷¨÷´–´œ´–´–´–˛´ –´œ´œ´–´–´–´–˛´,–´–´–´œ´–´–´–´œ´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–÷¨÷–÷–÷–÷¨÷–÷–÷–÷¨÷–÷¨÷–÷¨÷–÷¨÷–÷¨÷–÷–÷–÷¨÷–÷¨÷–÷¨÷–÷¨÷–÷¨÷–÷–÷–÷¨÷–÷¨÷–÷¨÷–÷–÷–÷¨÷–÷¨÷–÷¨÷¨÷¨÷–÷¨÷–÷´÷–÷´÷–÷¨÷–÷´÷–÷´÷–÷´÷¨÷¨÷–÷´÷–÷¨÷¨–´÷¨÷´÷–÷¨÷¨÷´÷–÷´÷¨÷¨÷–÷´÷–÷¨÷–÷´÷–÷´÷¨÷¨÷¨÷¨÷–÷¨÷–÷¨÷–÷¨÷–÷¨÷–÷¨÷¨÷¨÷–÷´–´–´÷´–´–´–´÷´–´÷´÷´÷´–´÷´–´÷´–´–´–´÷´–´÷´–´÷´–´÷œ–´÷´–´÷´–´÷œ–´–´÷´÷´–´¨÷¨÷¨÷¨÷¨÷¨÷¨–¨÷´–¨÷¨–¨÷´–¨÷´–¨÷´–¨÷´–¨÷´–¨÷´–¨÷´–´–´–¨÷´–´÷´–¨÷´–¨÷´–¨÷´–´–´–¨÷´–¨÷´–¨÷´–´–´–¨÷´–´÷´–´÷´–´÷´–´–´–´–´–´–´–´–´–´–W´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´÷´–´–´–´÷´–¨÷´–´÷´–¨–´–´–´œ´œ´œ´–˛´–´–´–˛´ –´–´–´–´–´–´–˛´–´œ´–´–´–´œ´–´–´–´œ´–˛´–´–´–˛´–´–´–´–◊÷÷–◊–÷–◊÷÷–÷–÷–◊–÷–÷–÷–÷–÷–÷–÷–÷–÷–÷–÷–÷–÷–÷–÷–÷–÷¨÷–÷–÷–÷–÷–÷¨÷–÷–÷–÷–÷–÷¨÷–÷–÷–÷–÷–÷–÷–÷–÷–÷–÷–÷–÷–÷–÷–÷–÷–÷¨÷–÷¨÷–÷¨÷–÷¨÷–÷¨÷–÷´÷¨÷¨÷–÷¨÷–÷¨÷–÷¨÷–÷–÷–÷¨÷–÷¨÷–÷–÷–÷–÷–÷–÷–÷–÷–÷¨÷–÷¨÷–÷¨÷–÷–÷–÷–÷–÷–÷–÷¨÷–÷´÷œ–´–´–´÷´–´÷´–´÷´–´÷œ–´÷œ÷´÷–÷´÷´–´÷´–´÷–÷´÷´–´÷œ÷´÷œ–´÷œ÷´÷œ÷´÷œ÷´÷´–´÷œ–÷¨÷¨÷¨÷–÷¨÷¨÷¨÷–÷¨÷¨÷¨÷¨÷¨÷¨÷´–¨÷¨÷¨÷´–¨÷¨–¨÷¨÷¨÷´–¨÷´–¨÷´–¨÷´–¨÷´–¨÷¨÷¨÷´–´÷´–¨÷´–¨÷´–¨÷´–¨÷´–¨÷¨÷¨÷´–¨÷´÷¨÷´–¨÷´–´÷´–´÷´–´–´–´÷´–´–´–¨÷´–´–´–´÷´–´–´–´÷´–´÷´–´–´–´–´–´–´–¨÷´–¨÷´–¨÷´–¨÷´–´÷´÷¨÷¨÷¨÷´–¨÷¨–¨÷´œ´–´œ´–´–´–´–´–´œ´–´œ´–´œ´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´œ´–÷–◊–÷–÷–÷–◊–÷–÷–÷–◊–÷¨÷–÷–÷–÷¨÷–÷¨÷–÷¨÷–÷¨÷–÷¨÷–÷–÷–÷¨÷–÷¨÷–÷¨÷–÷¨÷–÷¨÷–÷¨÷–÷¨÷–÷–÷–÷¨÷–÷¨÷–÷¨÷–÷–÷–÷¨÷–÷–÷–÷¨÷–÷¨÷–÷¨÷–÷¨÷–÷´÷–÷¨÷¨÷¨÷–÷¨÷¨÷´÷–÷¨÷–÷¨÷–÷¨÷–÷¨÷¨÷´÷–÷´÷–÷´÷–÷¨÷–÷¨÷–÷¨÷–÷–÷–÷¨÷–÷–÷–÷¨÷–÷¨÷¨÷´÷´–´÷´–´÷´–´÷´–´–´–´÷´–´÷´–´–´–´÷´–´÷œ–´÷´–´÷´–´÷´–´÷´–´÷´–´÷´–´÷´÷´÷´–´÷´–´¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨–¨÷¨÷¨÷¨÷¨÷¨÷¨÷´–¨÷´–¨÷´–´÷´–¨÷´–´–´–¨÷´–¨÷´–´–´–´–´–¨÷´–¨÷´–¨÷´–´÷´–¨÷´–´÷´–¨÷´–´–´–¨–´–´–´–¨÷´–´÷´–¨÷´–´÷W´–´–´–´–´–´–´–´–´–´÷´–´–´–¨÷´–´–´–´–´–´–´–´÷´–´–´–¨÷´–´–´÷¨÷´–´÷¨÷¨÷´–´–´–´–´œ´–´–´–´œ´–˛´œ´œ´œ´–´–´–´–´œ´œ˛´–˛´–´œ´–´–´–´œ´–´–´–˛´–´–´–´–´–´–´–´–´–´œ◊–÷–◊–÷–◊–÷–◊÷÷–◊–÷–◊–÷–◊–÷–◊–÷–÷–÷–÷–÷–÷–÷–÷–÷–÷–÷¨÷–÷–÷–÷–÷–÷–÷–÷¨÷–÷¨÷–÷¨÷–÷–÷–÷–÷–÷¨÷–÷¨÷–÷–÷–÷¨÷–÷–÷–÷¨÷–÷¨÷–÷–÷–÷–÷–÷¨÷–÷–÷–÷¨÷–÷¨÷–÷¨÷–÷–÷–÷¨÷–÷¨÷–÷–÷–÷¨÷–÷¨÷–÷–÷–÷–÷–÷¨÷–÷¨÷–÷–÷–÷–÷–÷–÷–÷¨÷–÷–÷–÷´÷´–´÷´÷´÷´÷´÷´–´÷´–´÷´÷´÷œ÷´÷´–´÷´–´÷´–´÷œ–´÷œ–´÷´–´÷´–´÷´÷´÷œ–´÷œ÷´÷´–´÷œ÷´÷œ¨÷¨÷–÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨–¨÷´–¨÷´–¨÷´÷¨÷´–¨÷´–¨÷´–¨÷´–¨÷´–¨÷´–¨÷´–¨÷´–´÷´–¨÷´–¨÷´–¨÷´–´÷´–¨÷´–¨÷´–¨÷´–¨÷´–¨÷´–¨÷´–¨÷´–¨÷´–¨÷´–´–´–¨÷´–´÷´–´÷´–¨÷´–¨÷´–´÷´–¨÷´÷¨÷¨÷¨÷´–¨÷´–¨÷¨÷¨÷´œ´–´–´–´–´–´–´–´–´–´–´–´–´–´œ´–´–´–´–´–´–´–´œ´–´œ´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–÷–÷–÷–÷–÷–÷–÷–÷–÷¨÷–÷–÷–÷–÷–÷–◊–÷¨÷–÷–◊–÷–÷–÷–÷–÷¨÷–÷–÷–÷¨÷–÷¨÷–÷¨÷–÷¨÷–÷¨÷¨÷¨÷–÷¨÷¨÷¨÷–÷¨÷¨÷¨÷–÷¨÷–÷–÷–÷¨÷–÷¨÷–÷¨÷–÷–÷–÷–÷–÷¨÷–÷¨÷¨÷¨÷–÷¨÷–÷¨÷–÷¨÷–÷¨÷–÷¨÷–÷¨÷–÷¨÷–÷¨÷–÷¨÷–÷¨÷–÷¨÷–÷¨÷–÷¨÷–÷–÷–÷¨÷–÷–÷–÷´÷´–´÷´–´–´–´÷´–´–´–´÷´–´÷´–´÷´–´–´–´÷´–´÷´–´÷´–´÷´–´÷´–´÷´–´–´–´÷´–´÷´–´÷´–´÷´–´¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨–¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨–¨÷¨÷¨÷¨–¨÷´–¨÷´–´–´–¨÷´–´–´–¨÷´–´–´–´÷´–´–´–¨–´–´–´–¨–´–¨÷´–¨÷´–¨÷´–¨÷´–¨÷´–¨÷K´–´–´–¨–´–¨÷¨–¨÷´–´÷´–´–´–´–´–´÷´–¨÷´–´÷´–´÷´–´÷´–´÷´–´÷´–¨÷´–¨÷´–´–´–¨–´–´–˛´–´œ´–´œ´–˛´ œ´œ´–´–´–´–´–˛´–´–´–´œ´–´œ´–´œ´–´–´–˛´–´œ´–˛´–´œ´–´œ´–˛´–´œ◊÷÷–◊–÷–◊–÷–◊–÷–◊÷÷–◊–÷–◊÷÷–◊–÷–◊÷÷–◊–÷–◊÷÷–◊÷÷–◊÷÷–◊–÷–◊÷÷–÷–÷–÷–÷–÷–÷–÷–÷–÷–÷¨÷–÷¨÷–÷¨÷–÷¨÷–÷–÷–÷–÷–÷¨÷–÷–÷–÷¨÷–÷¨÷–÷–÷–÷¨÷–÷–÷–÷–÷–÷¨÷–÷–÷–÷–÷–÷–÷–÷¨÷–÷–÷–÷¨÷–÷–÷–÷–÷–÷–÷–÷–÷–÷–÷–÷¨÷–÷–÷–÷–÷–÷¨÷–÷´÷´÷œ÷´–´÷–÷´÷´–´÷œ–´÷´–´÷–÷´÷œ–´÷œ–´÷œ÷´÷œ÷´÷´–´÷–÷œ÷œ÷´÷œ÷´÷œ÷´÷´÷´÷œ–´÷œ÷´÷´÷´÷–¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷–÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷–÷¨÷¨÷¨÷¨÷¨÷¨÷´–¨÷¨÷¨÷´–¨÷´–¨÷´–¨÷´–¨÷´–¨÷´–¨÷´–¨÷¨÷¨÷´–¨÷´–¨÷¨÷¨÷´–¨÷¨–E¨÷´÷¨÷´–¨÷¨÷¨÷¨÷¨÷´÷¨÷´–¨÷¨÷¨÷´–¨÷¨÷¨÷´–¨÷¨÷¨÷¨–¨÷´÷¨÷´–¨÷¨÷¨÷´–¨÷¨–´–˛´–´–´–˛´–´–´–´–´–´–´–´–´–´–´–˛´0–´–´–´–´–´–´–´œ´–´–´–´–´–´œ´–´–´–´–´–´–´–´–´–´–´–÷–◊–÷–÷–÷–÷–÷–÷–÷–◊–÷–÷–÷–÷–÷–÷–÷–÷–÷–÷–÷–◊–÷–÷–÷–◊–÷–◊–÷–◊–÷–÷–÷–÷–÷¨÷–÷¨÷–÷¨÷–÷¨÷–÷¨÷–÷¨÷–÷¨÷–÷¨÷–÷¨÷–÷¨÷–÷¨÷–÷¨÷–÷¨÷–÷¨÷–÷–÷–÷¨÷–÷¨÷–÷¨÷–÷–÷–÷¨÷–÷¨÷–÷–÷–÷–÷–÷–÷–÷–÷–÷¨÷–÷–÷–÷¨÷–÷¨÷–÷¨÷–÷–÷–÷–÷¨–´–´–´÷´–´–´–´÷´–´÷´–´÷–÷´–´–´÷´–´÷´–´÷œ÷´÷´–´÷´–´÷œ–´÷´–´÷´–´÷´–´÷´–´÷´–´÷´÷´÷–÷´÷´–´¨÷¨÷¨–¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷´–´÷´–¨÷´–´÷´–¨÷´–´÷´–´÷´–´÷´–¨÷´–¨÷´–¨÷´–´÷´–¨÷´–´–C´–¨÷´–¨÷´–¨÷¨–¨÷¨÷¨÷´–¨÷¨–¨÷´–¨÷´÷¨÷´–¨÷´÷¨÷´÷¨÷´–¨÷´–¨÷¨–¨÷´–¨÷´–´–˛´œ´œ´–˛´$œ´œ´–´œ´–´œ´–´–´–´–´–´–´–´–´–´–´–´–´–˛´"–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–◊–÷–◊–÷–◊–÷–◊–÷–÷–÷–◊–÷–◊–÷–◊÷÷–◊–÷–◊÷÷–÷–÷–◊÷÷–÷–÷–◊–÷–◊–÷–◊÷÷–◊–÷–◊÷÷–◊–÷–÷–÷–÷–÷¨÷–÷–÷–÷–÷–÷–÷–÷¨÷–÷–÷–÷¨÷–÷–÷–÷–÷–÷–÷–÷–÷–÷–÷–÷–÷–÷–÷–÷–◊–÷–÷–÷–÷–÷–÷–÷–÷–÷–÷–÷–÷–÷–÷–÷–÷–÷–÷–÷¨÷–÷–÷–÷¨÷–÷–÷––´÷´–´÷´–´÷œ÷´÷´–´÷œ÷´÷´–´÷–÷´÷´÷´÷¨÷´÷–÷´÷–÷´÷–÷´÷´÷œ÷´–´÷–÷´÷–÷´÷–÷´÷´–´÷–÷´÷´÷´÷´÷´÷œ¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷–÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷–÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷–÷¨÷¨÷¨÷¨÷¨÷¨÷¨–¨÷¨÷¨÷´–¨÷´–¨÷´÷¨÷¨÷¨÷¨÷¨÷´–¨÷´–¨÷´÷¨÷´–¨÷¨÷¨÷´–¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷´–¨÷¨÷¨÷´–´–´œ´–´œ´–´œ´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´÷´–´–´–´–´–´–´–´÷´–´–´–´–´–´–´–´–´–´–´–´–´œ´–÷–÷–÷–◊÷÷–◊–÷–÷–÷–÷–÷–÷–÷–÷–÷–÷–÷¨÷–÷–÷–÷–÷–÷–◊–÷–÷–÷–÷–÷–÷–÷–÷–÷–÷–÷–÷–÷–÷–÷–◊–÷–÷–÷–÷–÷¨÷–÷¨÷–÷¨÷–÷¨÷–÷¨÷–÷–÷–÷¨÷–÷–÷–÷¨÷–÷¨÷–÷¨÷–÷¨÷–÷–÷–÷–÷–÷¨÷–÷–÷–÷¨÷–÷–÷–÷–÷–÷–÷–÷¨÷–÷–÷–÷–÷–÷¨÷–÷¨÷–÷¨÷œ–´÷´–´÷´–´÷´÷´÷¨–´÷´÷´÷´–´÷¨÷´÷–÷´÷¨÷´÷´–´÷´÷´÷––´÷´÷´÷––´÷–÷´÷¨–´÷´–´÷´–´÷´–´÷œ–´÷´–´÷´–´¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨–¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨–¨÷¨÷¨÷´–¨÷´–¨÷´–¨÷´–¨÷´–¨–´–¨÷´–´÷´–¨÷´–¨÷´÷¨÷´–¨÷´–¨÷´–¨÷¨÷¨÷´–¨÷¨÷¨÷¨–¨÷¨÷¨÷¨–¨÷¨÷¨÷¨–¨÷¨–¨÷¨÷¨÷´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´œ´–´œ´–´–´–´œ´–´–´–´œ◊÷÷–◊–÷–◊÷÷–◊–÷–◊÷÷–◊–÷–◊÷÷–◊–÷–◊÷÷–◊–÷–◊÷÷–◊–÷–◊÷÷–◊–÷–◊÷÷–◊÷÷–◊÷÷–◊–÷–◊÷÷–◊–÷–◊÷÷–◊–÷–◊÷÷–◊–÷–◊–÷–÷–÷–÷–÷–÷–÷–÷–÷–÷–÷–÷–÷–÷–÷–÷–÷¨÷–÷–÷–÷¨÷–÷–÷–÷–÷–÷–÷–÷–÷–÷–÷–÷–÷–÷–◊–÷–÷–÷–◊÷÷–÷–÷–÷–÷¨÷´÷´÷–÷´÷´÷´÷–÷´÷¨÷´÷––´÷–÷´÷–÷–÷–÷´÷–÷´÷œ÷´÷œ÷´÷–÷´÷–÷´÷œ÷´÷–÷´÷´÷´÷–÷´÷´–´÷œ–´÷œ–´÷œ–´÷œ÷´÷œ¨÷¨÷¨÷¨÷–÷¨÷¨÷¨÷–÷¨÷¨÷¨÷–÷¨÷¨÷¨÷–÷¨÷¨÷¨÷–÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷–÷¨÷–÷¨÷¨÷¨÷–÷¨÷¨÷¨÷–÷¨÷¨÷¨÷–÷¨÷¨÷¨÷–÷¨÷¨÷¨÷¨÷¨÷¨÷¨–¨÷¨÷¨÷´–¨÷´÷¨÷´–¨÷´–¨÷´–´–´–´÷´–¨÷´÷¨÷´–¨÷´–¨÷¨÷¨÷¨÷¨÷¨÷–÷¨÷¨÷¨÷¨÷¨÷¨÷´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´÷´œ´–´–´–´–´–´–´–´–´–´œ´–´–´–´–´–÷–◊–÷–÷–÷–÷–÷–÷–÷–÷–÷–÷–÷–÷–÷–÷–÷–◊–÷–÷–÷–◊–÷–÷–÷–◊–÷–◊–÷–÷–÷–÷–÷–◊–÷–÷–÷–◊–÷¨÷–÷–◊–÷–÷–÷–◊–÷–÷–÷–÷–÷–÷–÷¨÷–÷–÷–÷¨÷–÷¨÷–÷¨÷–÷¨÷–÷¨÷–÷¨÷–÷´÷¨÷¨÷–÷´÷–÷¨÷–÷¨÷–÷¨÷–÷¨÷–÷¨÷–÷–÷–÷–÷–÷–÷–÷¨÷–÷´–´–´÷¨–´÷´–´÷´–´÷´–´÷´–´÷´–´÷´–´÷´–´÷´–´÷´–´÷´–´÷œ–´÷´–´÷´–´÷´–´÷´–´÷´÷´÷´–´÷œ–´÷œ–´÷´–´÷´–´÷´÷´¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨–¨÷´–´–´–´÷´–¨–{´–¨÷´–´–´–´–´–´–´–´–´–´–´–´÷´–´÷´–¨÷´–´÷¨÷¨÷´–´–´–´÷´–´–´œ´–´œ´–´–´–´œ´–´œ´œ´œ´œ´–´–´œ´–´œ´–´œ´–´–´–´œ´œ´–´–´œ´–´œ´–´œ´–´–´–˛´–´–´–´œ´–´–´–´œ´–´–´–˛´–´–÷–÷–◊÷÷–÷–÷–◊÷÷–÷–÷–◊÷÷–÷–÷¨◊÷÷–◊–÷–◊–÷–◊–÷–◊÷÷–◊–÷–◊–÷–÷–÷–◊÷÷–◊–÷–◊–÷–÷–÷–◊÷÷–÷–÷–◊÷÷–÷–÷–◊÷÷–◊–÷–◊–÷–◊–÷–◊÷÷–◊–÷–÷–÷–÷–÷¨÷–÷¨÷–÷–÷–÷¨÷–÷¨÷–÷¨÷–÷´÷–÷–÷–÷¨÷–÷–÷–÷¨÷–÷¨÷–÷¨÷–÷¨÷¨÷¨÷´–´÷œ–´÷´÷´÷´–´÷œ÷´÷œ–´÷œ–´÷œ÷´÷œ÷´÷´–´÷œ÷´÷œ–´÷´–´÷œ–´÷´÷´÷´–´÷œ–´÷œ÷´÷œ–´÷œ÷´÷´–´÷´÷´÷œ÷´÷´–´÷´–´÷´¨÷¨÷¨÷¨÷¨÷¨÷–÷¨÷¨÷¨÷–÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷–÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷–÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷–÷¨–¨÷¨÷¨÷´–¨÷´–¨÷´–¨÷´–¨÷´–¨÷´–´–´–´–´–´÷´–´÷´–¨÷´–´–´–´–´–¨÷´–´–´–´–´–´–´–´–´–´–´œ´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´œ´–´–´–´œ´–´–´–´–´–´–´–´–´–´œ´–´–´–´–´–´–´–´–´–´–´–´œ´–÷–÷–÷–◊–÷¨÷–÷–÷–÷–÷–÷–◊–÷–÷–÷–◊–÷–÷–÷–◊–÷¨÷–÷–÷–÷–÷–÷–÷–÷–÷–÷–÷–÷¨÷–÷–◊–÷–÷–÷–◊–÷–◊–÷–÷–÷–÷–÷–◊–÷¨÷–÷–÷–÷–÷–÷–÷–÷–÷–÷–÷–÷–÷–÷¨÷–÷¨÷–÷¨÷–÷¨÷–÷¨÷–÷´÷–÷´÷¨÷¨÷–÷´÷–÷¨÷–÷´÷–÷´÷–÷¨÷–÷´–´–´÷´–´–´–´–´–´–´–´÷´–´÷´–´÷´–´–´–´÷´–´÷´–´÷´–´–´÷´÷´–´–´–´÷œ–´–´–´÷´–´÷´–´÷´–´÷´–´÷´–´÷´–´÷´–´÷´÷´÷´–´¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨–¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷1¨–¨÷´–¨÷´–´–´–´–´–´–´–´–´–´–´–´÷´–´–´–´–´–´÷¨–´–´–˛´œ´–˛´œ´œ´œ˛´œ´œ´–˛´–´–´–´–´–´œ´–´–´–´œ´–˛´–´–´–˛´ œ´œ´–´œ´–´–´–˛´–´–´–´œ´–´–´–´œ´–´œ´–˛´–´–´–´œ◊÷÷–◊–÷–◊÷÷–÷–÷–◊–÷–÷–÷–◊÷÷–÷–÷–◊÷÷–÷–÷–◊÷÷–◊–÷–◊÷÷–◊–÷–◊÷÷–◊–÷–◊÷÷–◊–÷–◊÷÷–◊–÷–◊÷÷–◊–÷–◊÷÷–◊–÷–◊÷÷–◊–÷–◊÷÷–◊÷÷–◊–÷–◊–÷–◊÷÷–◊–÷–◊–÷–◊–÷–÷–÷–÷–÷¨÷–÷¨÷–÷¨÷–÷–÷–÷¨÷–÷¨÷–÷–÷–÷¨÷–÷´÷–÷´÷œ÷´÷´–´÷–÷´÷œ÷´÷œ÷´÷´–´÷œ÷´÷–÷´÷´–´÷–÷´÷–÷´÷œ–´÷´÷´÷œ–´÷œ÷´÷œ÷´÷œ–´÷œ÷´÷œ÷´÷œ÷´÷´–´÷œ–´÷´÷´÷´–´÷´–´÷–¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷–÷¨÷¨÷¨÷–÷¨÷¨÷¨÷–÷¨÷¨÷¨÷¨÷¨÷–÷¨÷–÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷–÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷–÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷–÷¨÷¨÷¨÷–÷¨÷¨÷¨÷¨÷¨÷¨÷´–¨÷´–´–´–´÷´–´–´–´÷´–´÷´–´÷´–´÷´–´–´–´–´–´–´–´–´œ´–´–´–´–´–´–´–´–´–´–´–´œ´–´–´–´œ´–´–´–´–´–´–´–´–´–´–´–´œ´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–÷–◊–÷–÷–÷–÷–÷–÷–÷–◊–÷¨÷–÷–÷–÷–÷–÷–◊–÷–÷–÷¨÷–÷–÷–÷–◊–÷–◊–÷–◊–÷–÷–÷–◊–÷–÷–÷–◊–÷¨◊–÷¨÷–÷–◊–÷–◊–÷–÷–÷–◊–÷–÷–÷–◊–÷–◊–÷–◊–÷–÷–÷–◊–÷–÷–÷–÷–÷–÷–÷–÷–÷–÷–÷–÷–÷´÷¨÷´÷¨–¨÷¨÷¨÷–÷–÷–÷¨÷–÷´÷´–´÷´–´÷´–´÷œ–´–´–´÷´–´÷´–´÷´–´÷´–´÷´–´÷´–´÷´–´÷´–´÷´–´÷´–´÷œ–´÷œ–´÷´–´÷œ–´÷´–´÷œ–´÷´–´÷´–´÷œ–´–´–´÷´–´÷´–´¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨–¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷3¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷´–´–´–´–´–´–´–´÷´–´–´–´–´–´œ´œ´–˛´4–´–´–´œ´–´–´–´œ´–´–´–´–´–´œ´–´–´–´–´–´–´–´œ´–´–´–´–´–˛´–´–´–˛´–´œ´–´œ´–´œ´–´œ´–´–´–˛´
  2659. –´–´–´–´–´–◊–÷–◊–÷–◊–÷–◊÷÷–◊–÷–◊÷÷–÷–÷–◊÷÷–÷–÷–◊–÷–◊÷÷–◊–÷–◊–÷–◊–÷–◊–÷–◊–÷–◊–÷–◊÷÷–◊–÷–◊÷÷–◊–÷–◊–÷–◊–÷–◊–÷–÷–÷–◊÷÷–◊–÷–◊÷÷–◊–÷–◊–÷–◊–÷–◊–÷–÷–÷–◊–÷–◊–÷–◊÷÷–◊–÷–÷–÷–÷–÷¨÷–÷–÷–÷¨÷–÷¨÷–÷¨÷œ–´÷´–´÷´–´–´–´÷´–´÷œ÷´÷´÷´÷´–´÷œ÷´÷´–´÷–÷´÷´–´÷œ÷´÷´–´÷–÷´÷œ–´÷´–´÷´÷´÷´–´÷´–´÷œ–´÷´–´÷œ÷´÷´–´÷´–´÷´–´÷œ÷´÷–¨÷¨÷–÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷–÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷–÷¨÷¨÷¨÷–÷¨÷–÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷–÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷–÷¨÷¨÷¨÷–÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷–÷¨÷¨÷¨÷–÷¨÷¨÷´–´÷´–´–´–¨÷´–´–´–´–´–´–´–´–´œ´œ´œ´–´œ´–´–´–´–´–´–´–´–´–´œ´–´–´–´–´–´–´–´œ´–´–´–´–´–´–´–´–´–´–´–´œ´–´–´–´–´–´–´–´–´–´œ´–´–´–´–´–÷¨÷–÷–÷–÷–÷–÷–◊–÷–÷–÷–◊–÷–÷–÷–◊–÷–÷–÷–◊–÷–÷–÷–◊–÷¨÷–÷–◊–÷–÷–÷–÷–÷–÷–÷–÷–÷–÷–÷–◊–÷¨÷–÷–÷–÷–÷–÷–◊–÷–÷–÷–÷–÷–÷–÷–÷–÷–÷–÷–÷–÷–÷–÷–◊–÷¨÷–÷–÷–÷–÷–÷–÷–÷¨÷–÷–◊–÷¨÷–÷¨÷–÷´÷¨÷¨÷–÷¨÷–÷´÷´–´÷´–´÷´–´–´–´–´–´÷œ–´÷´–´÷´–´÷´–´–´–´÷´–´÷´–´÷´–´÷´–´÷´–´÷´–´÷´–´÷´–´÷œ–´–´–´÷´–´÷´–´÷´–´÷´–´÷´–´÷´–´÷´–´¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨–¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷+¨–¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨–¨÷¨÷¨÷¨–¨÷¨–¨÷´–´–´–¨÷´–´–˛´Hœ´œ´–´œ´–´œ´–´œ´–´œ´–´œ´–´œ´–´–´–´œ´–´–´–´œ´–´œ´–´œ´–´œ´–´œ´–´–´–´œ´–´œ´–˛´ –´–´–´œ´–´–´–˛´–´–´–´–´–´–´–´´◊–÷–◊–÷–◊÷÷–◊–÷–◊÷÷–◊–÷–◊÷÷–◊–÷–◊÷÷–◊–÷–◊÷÷–◊–÷–◊–÷–◊–÷–◊÷÷–◊–÷–◊÷÷–◊–÷–◊÷÷–◊÷÷–◊–÷–◊÷÷–◊÷÷–◊÷÷–◊–÷–◊÷÷–◊÷÷–◊–÷–◊÷÷–◊–÷–◊–÷–◊–÷–◊÷÷–◊÷÷–◊–÷–◊–÷–◊÷÷–◊–÷–◊–÷–◊–÷–◊–÷–÷–÷–÷–÷–÷¨–´÷œ–´÷´–´÷œ÷´÷œ–´÷œ÷´÷œ–´÷œ÷´÷´–´÷œ–´÷´–´÷œ÷´÷´–´÷œ÷´÷œ÷´÷´÷´÷´–´÷–÷´÷´÷´÷œ÷´÷´÷´÷œ÷œ÷œ÷´÷´–´÷–÷´÷œ–´÷œ÷´÷œ¨÷¨÷¨÷¨÷–÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷–÷¨÷¨÷¨÷–÷¨÷¨÷¨÷–÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷–÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷–÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷–÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷–÷¨÷¨÷¨÷–÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷–÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷–÷¨÷¨÷¨÷¨÷¨÷¨÷´–´–´–´–´œ´–´–´–´–´–´–´–´–´–´–´–´–´–´œ´–´–´–´–´–´œ´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–÷–◊–÷¨÷–÷–◊–÷–÷–÷–÷–÷–÷–÷–◊–÷–÷–÷–◊–÷–÷–÷–◊–÷–÷–÷–◊–÷–÷–÷–◊–÷–÷–÷–÷–÷–÷–÷–÷–÷–÷–÷–◊–÷–÷–÷–÷–÷–÷–÷–◊–÷–÷–÷–◊–÷–÷–÷–◊–÷–÷–÷–◊–÷¨÷–÷–◊–÷–÷–÷–÷–÷–÷–÷–◊–÷–÷–÷–◊–÷–÷–÷–◊–÷–÷–÷–◊–÷¨÷–÷¨÷––´÷´–´÷´–´÷œ–´÷´–´÷´÷´÷œ–´÷´–´÷´–´÷´–´÷´–´÷´–´÷´–´÷´–´÷œ–´÷´–´÷œ–´÷´–´÷´–´÷´–´÷´–´÷œ–´÷´–´÷´–´÷´–´÷´–´¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷–÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷–÷¨÷¨÷s¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨–¨÷¨÷¨÷´–´–´œ´–´–´–´œ´–´œ´–´–´–´œ´–´œ´–´œ´–´–´–´œ´–´–´–´œ´–´œ´–´–´–´œ´–˛´"–´–´–´–´–´–´œ´–´–´–´–´–´–´–´–´–´–´œ◊–÷–◊–÷–÷–÷–◊÷÷–◊–÷–◊–÷–◊–÷–◊÷÷–◊–÷–◊–÷–÷–÷–◊÷÷–÷–÷–◊÷÷–◊–÷–◊÷÷–÷–÷–◊÷÷–◊÷÷–◊–÷–◊–÷–◊÷÷–÷–÷–◊÷÷–◊–÷–◊÷÷–÷–÷–◊÷÷–◊–÷–◊÷÷–◊–÷–◊÷÷–◊–÷–◊÷÷–◊–÷–◊–÷–◊–÷¨◊–÷–◊–÷–◊–÷–÷–÷–◊÷÷–◊–÷–◊÷÷–◊–÷–◊–÷¨÷œ÷´÷œ÷´÷´–´÷´÷´÷œ–´÷–÷´÷´–´÷œ÷´÷´–´÷œ÷´÷´–´÷œ÷´÷´–´÷´–´÷œ÷´÷´–´÷œ–´÷œ÷´÷œ–´÷œ÷´÷´÷´÷œ÷´÷´÷´÷œ÷´÷´
  2660. d
  2661. °dONLNd%·8ÔÓ(
  2662. VTECHNIQUES FOR WRITING°dONLNd<Ó8¸´*
  2663.  
  2664. AND DEBUGGING°dONLNdJ˚8    ô*
  2665. COMPONENTS°dONLNdU8"*TIME BASES: THE HEARTBEAT°dONLNdo!8/ô*
  2666. OF QUICKTIME°dONLNd|:8HÕ*BETTER APPLE EVENT°dONLNdèG8U¯*
  2667. CODING THROUGH OBJECTS°dONLNd¶`8n¸*ANOTHER TAKE ON GLOBALS°dONLNdæm8{“*
  2668. IN STANDALONE CODE°dONLNd—Ü8î»*COMPONENTS AND C°dONLNd·Ö»ìÿ(ÆÊ++°dONLNd‰ì8°À(ºVCLASSES COMPARED°dONLNdı¨8∫·*ANIMATION AT A GLANCE°dONLNd ≈8”´*TOP 10 PRINTING°dONLNd“8‡®*
  2669. MISDEMEANORS°dONLNd(Î8˘A*K°dONLNd)Î@˘w)ON & BA°dONLNd0Îw˘)7L°dONLNd1Î~˘Ì)’S PUZZLE PAGE°dONLNd@8≤(-VMACINTOSH Q & A
  2670. eVxkòÄHHfi…l)Y◊ˇˇˇˇˇˇÃÃˇˇˇˇôôˇˇˇˇffˇˇˇˇ33ˇˇˇˇˇˇˇˇˇˇÃÃˇˇÃÃÃÃˇˇôôÃÃˇˇ    ffÃÃˇˇ
  2671. 33ÃÃˇˇ ÃÃˇˇ ˇˇôôˇˇ
  2672. ÃÃôôˇˇôôôôˇˇffôôˇˇ33ôôˇˇôôˇˇˇˇffˇˇÃÃffˇˇôôffˇˇffffˇˇ33ffˇˇffˇˇˇˇ33ˇˇÃÃ33ˇˇôô33ˇˇff33ˇˇ3333ˇˇ33ˇˇˇˇˇˇÃÃˇˇ ôôˇˇ!ffˇˇ"33ˇˇ#ˇˇ$ˇˇˇˇÃÃ%ÃÃˇˇÃÃ&ôôˇˇÃÃ'ffˇˇÃÃ(33ˇˇÃÃ)ˇˇÃÃ*ˇˇÃÃÃÃ+ÃÃÃÃÃÃ,ôôÃÃÃÃ-ffÃÃÃÃ.33ÃÃÃÃ/ÃÃÃÃ0ˇˇôôÃÃ1ÃÃôôÃÃ2ôôôôÃÃ3ffôôÃÃ433ôôÃÃ5ôôÃÃ6ˇˇffÃÃ7ÃÃffÃÃ8ôôffÃÃ9ffffÃÃ:33ffÃÃ;ffÃÃ<ˇˇ33ÃÃ=ÃÃ33ÃÃ>ôô33ÃÃ?ff33ÃÃ@3333ÃÃA33ÃÃBˇˇÃÃCÃÃÃÃDôôÃÃEffÃÃF33ÃÃGÃÃHˇˇˇˇôôIÃÃˇˇôôJôôˇˇôôKffˇˇôôL33ˇˇôôMˇˇôôNˇˇÃÃôôOÃÃÃÃôôPôôÃÃôôQffÃÃôôR33ÃÃôôSÃÃôôTˇˇôôôôUÃÃôôôôVôôôôôôWffôôôôX33ôôôôYôôôôZˇˇffôô[ÃÃffôô\ôôffôô]ffffôô^33ffôô_ffôô`ˇˇ33ôôaÃÃ33ôôbôô33ôôcff33ôôd3333ôôe33ôôfˇˇôôgÃÃôôhôôôôiffôôj33ôôkôôlˇˇˇˇffmÃÃˇˇffnôôˇˇffoffˇˇffp33ˇˇffqˇˇffrˇˇÃÃffsÃÃÃÃfftôôÃÃffuffÃÃffv33ÃÃffwÃÃffxˇˇôôffyÃÃôôffzôôôôff{ffôôff|33ôôff}ôôff~ˇˇffffÃÃffffÄôôffffÅffffffÇ33ffffÉffffÑˇˇ33ffÖÃÃ33ffÜôô33ffáff33ffà3333ffâ33ff䡡ffãÃÃffåôôffçffffé33ffèffêˇˇˇˇ33ëÃÃˇˇ33íôôˇˇ33ìffˇˇ33î33ˇˇ33ïˇˇ33ñˇˇÃÃ33óÃÃÃÃ33òôôÃÃ33ôffÃÃ33ö33ÃÃ33õÃÃ33úˇˇôô33ùÃÃôô33ûôôôô33üffôô33†33ôô33°ôô33¢ˇˇff33£ÃÃff33§ôôff33•ffff33¶33ff33ßff33®ˇˇ3333©ÃÃ3333™ôô3333´ff3333¨333333≠3333Æˇˇ33ØÃÃ33∞ôô33±ff33≤3333≥33¥ˇˇˇˇµÃÃˇˇ∂ôôˇˇ∑ffˇˇ∏33ˇˇπˇˇ∫ˇˇÃêÃÃÃúôôÃÃΩffÃÃæ33ÃÃøÃÿˇˇôô¡ÃÃôô¬ôôôô√ffôôƒ33ôô≈ôôΔˇˇff«ÃÃff»ôôff…ffff 33ffÀffÃˇˇ33ÕÃÃ33Œôô33œff33–3333—33“ˇˇ”ÃÑôô’ff÷33◊eVxkί+V+˜    ˘+¨◊+˜˘Å◊¨ˆ˘◊¨+ˆ˛+V¨V+˛V¨V+˘ V˜◊¨+˙+ı◊˘    Vˆ◊+˘¨ˆ◊¯ň◊¯    ň◊+˘
  2673. Vˆ◊¨+˙    +ı◊¨˙
  2674. ň◊Å˙
  2675. ˛ˆ◊VV¸
  2676. ˛+¯◊˛+V+˝˝+ÅV++VŞ++¸Î
  2677. d°dONLNdP_8m<*[I°dONLNdQ_=mo)ssue 12
  2678. °dONLNdX`olx)2   °dONLNd[`xl¡)    
  2679. December 1992
  2680.     °dONLNdlΔ8—ç(ÌVApple Computer, Inc.ˇ(Ë◊#ˇ ˇˇˇˇ#◊ 
  2681. d,     Helvetica
  2682.     .°dONLNdâñî+¥∞E D I T O R I A L  S T A F F, Palatino°dONLNdòñ°⁄*Editor-in-Cheek  °dONLNd.ò⁄°)D
  2683. Caroline Rose°dONLNd<¶ñØı(Ã¥Technical Buckstopper  °dONLNdS¶ıØ))_ Dave Johnson°dONLNd`¥ñΩø(⁄¥
  2684. Our Boss  °dONLNdj¥øΩÚ)) Greg Joswiak°dONLNdw¬ñÀΩ(Ë¥
  2685. His Boss  °dONLNdŬΩÀ)'David Krathwohl°dONLNdë–ñŸ”(ˆ¥Review Board  °dONLNdü–”ŸH)=Pete (“Luke”) Alexander, Neil°dONLNdΩfi¢Á2(¿%Day, C. K. Haun, Jim Reekes, Bryan K.°dONLNd„Ï¢ı3*%(“Beaker”) Ressler, Larry Rosenstein,°dONLNd    ˙¢#*Andy Shebanow, Gregg Williams°dONLNd'ñfi(.¥Managing Editor  °dONLNd8fi)HMonica Meffert°dONLNdGñ(<¥Assistant Managing Editor  °dONLNdbD)pAna Wilczynski°dONLNdq$ñ-Ì(J¥Contributing Editors  °dONLNdá$Ì-8)WLorraine Anderson,°dONLNdö2¢;B(X¿)Geta Carlson, Toni Haskell, Judy Helfand,°dONLNdƒ@¢I*Rebecca Pepper, Rilla Reynolds°dONLNd„NñW∏(t¥    Indexer  °dONLNdÏN∏WÎ)"
  2686. Ira Kleinberg°dONLNd˙iñt"(ê¥A R T  &  P R O D U C T I O N°dONLNdxñÅÏ*Production Manager  °dONLNd,xÏÅ%)VHartley Lesser°dONLNd;ÜñèÃ(¨¥Art Director  °dONLNdIÜÃè)6 Diane Wilcox°dONLNdVîñùÒ(∫¥Technical Illustration  °dONLNdnîÒùJ)[Nurit Arbel, John Ryan°dONLNdÜ¢ñ´≈(»¥ Formatting  °dONLNdí¢≈´
  2687. )/Forbes Mill Press°dONLNd§∞ñπ∫(÷¥
  2688. Printing  °dONLNdÆ∞∫π1)$Wolfer Printing Company, Inc.°dONLNdÃæñ«›(‰¥Film Preparation  °dONLNdfi曫)GAptos Post, Inc.°dONLNdÔÃñ’Δ(Ú¥ Production  °dONLNd˚ÃΔ’)0PrePress Assembly°dONLNd
  2689. ⁄ñ„Õ(¥
  2690. Photography  °dONLNd⁄Õ„B)7Sharon Beals, Lisa Jongewaard°dONLNd8ËñÒ
  2691. (¥Electronic version production°dONLNdXˆ£ˇ+
  2692. In-Yung Kim, Dan Peterson,°dONLNdt£
  2693. *Meredith Best, Cassi Carpenter0§zC 
  2694. •{A    òÄ>K=%%aØLflˇˇˇˇˇˇˇˇˇˇˇÃÃˇˇˇˇôôˇˇˇˇffˇˇˇˇ33ˇˇˇˇˇˇÃÃˇˇˇˇÃÃÃÃˇˇÃÃôô    ˇˇÃÃff
  2695. ˇˇÃÃ33 ˇˇÃà ˇˇôôˇˇ
  2696. ˇˇôôÃÃˇˇôôôôˇˇôôffˇˇôô33ˇˇôôˇˇffˇˇˇˇffÃÃˇˇffôôˇˇffffˇˇff33ˇˇffˇˇ33ˇˇˇˇ33ÃÃˇˇ33ôôˇˇ33ffˇˇ3333ˇˇ33ˇˇˇˇˇˇÃàˇˇôô!ˇˇff"ˇˇ33#ˇˇ$ÃÃˇˇˇˇ%ÃÃˇˇÃÃ&ÃÃˇˇôô'ÃÃˇˇff(ÃÃˇˇ33)ÃÃˇˇ*ÃÃÃÃˇˇ+ÃÃÃÃÃÃ,ÃÃÃÃôô-ÃÃÃÃff.ÃÃÃÃ33/ÃÃÃÃ0ÃÃôôˇˇ1ÃÃôôÃÃ2ÃÃôôôô3ÃÃôôff4ÃÃôô335ÃÃôô6ÃÃffˇˇ7ÃÃffÃÃ8ÃÃffôô9ÃÃffff:ÃÃff33;ÃÃff<ÃÃ33ˇˇ=ÃÃ33ÃÃ>ÃÃ33ôô?ÃÃ33ff@ÃÃ3333AÃÃ33BÃÃˇˇCÃÃÃÃDÃÃôôEÃÃffFÃÃ33GÃÃHôôˇˇˇˇIôôˇˇÃÃJôôˇˇôôKôôˇˇffLôôˇˇ33MôôˇˇNôôÃÃˇˇOôôÃÃÃÃPôôÃÃôôQôôÃÃffRôôÃÃ33SôôÃÃTôôôôˇˇUôôôôÃÃVôôôôôôWôôôôffXôôôô33YôôôôZôôffˇˇ[ôôffÃÃ\ôôffôô]ôôffff^ôôff33_ôôff`ôô33ˇˇaôô33ÃÃbôô33ôôcôô33ffdôô3333eôô33fôôˇˇgôôÃÃhôôôôiôôffjôô33kôôlffˇˇˇˇmffˇˇÃÃnffˇˇôôoffˇˇffpffˇˇ33qffˇˇrffÃÃˇˇsffÃÃÃÃtffÃÃôôuffÃÃffvffÃÃ33wffÃÃxffôôˇˇyffôôÃÃzffôôôô{ffôôff|ffôô33}ffôô~ffffˇˇffffÃÃÄffffôôÅffffffÇffff33ÉffffÑff33ˇˇÖff33ÃÃÜff33ôôáff33ffàff3333âff33äffˇˇãffÃÃåffôôçfffféff33èffê33ˇˇˇˇë33ˇˇÃÃí33ˇˇôôì33ˇˇffî33ˇˇ33ï33ˇˇñ33ÃÃˇˇó33ÃÃÃÃò33ÃÃôôô33ÃÃffö33ÃÃ33õ33ÃÃú33ôôˇˇù33ôôÃÃû33ôôôôü33ôôff†33ôô33°33ôô¢33ffˇˇ£33ffÃç33ffôô•33ffff¶33ff33ß33ff®3333ˇˇ©3333ÃÙ3333ôô´3333ff¨333333≠3333Æ33ˇˇØ33ÃÃ∞33ôô±33ff≤3333≥33¥ˇˇˇˇµˇˇÃÃ∂ˇˇôô∑ˇˇff∏ˇˇ33πˇˇ∫ÃÃˇˇªÃÃÃúÃÃôôΩÃÃffæÃÃ33øÃÿôôˇˇ¡ôôÃìôôôô√ôôffƒôô33≈ôôΔffˇˇ«ffÃûffôô…ffff ff33ÀffÃ33ˇˇÕ33ÃÃŒ33ôôœ33ff–3333—33“ˇˇ”ÃÑôô’ff÷33◊ÓÓÿ››Ÿªª⁄™™€àà‹ww›UUfiDDfl""‡·ÓÓ‚››„ªª‰™™ÂààÊwwÁUUËDDÈ""ÍÎÓÓÏ››ÌªªÓ™™ÔààwwÒUUÚDDÛ""ÙıÓÓÓÓÓÓˆ››››››˜ªªªªªª¯™™™™™™˘àààààà˙wwwwww˚UUUUUU¸DDDDDD˝""""""˛ˇK=§zA    ?=ħz´z§™ÅûÜ•ÄûħzÄ™••Äħz˝´•œ¨Ä§Ä•ħĕ´§z´Ä•™zz§´Ä§z˛§áû™Å§z´•Y?=yÄ•§Ä´Äü™Ä•ĕħ§Äŧ§zÄ´§¸´¸–œÅ™z´§˙§´Ä§z•™Å§Ä•Äûħ¸œ˙§Ä§ÄüÄħL?=ÄûÜü™Å§Ä§Ä•´§á§˙»Å™Äz•§Ä´¸œ¨–ÄÄ•§Ä´•™Å§z´§´Ä§Å•™zÄœ•ĕħ˚§Ä•ÄF?=ħzÄ•§Ä§áû´Ä§Äz´û{ħ§Äz˝´•–±üܧzħŧÄûÄ•™˚§˚§Ä§á§¨•™z§Å§ÄûÄ•F?=Äz§§ÄÄ•z§Ä´z£˚´z£{™Ä§Åœ˝¸–œ˝´§˚üÜûÄz™{™§Ä•zħ´Å§§˝™•ÄÄ•§áûħL?=zz§Å§ÄûÄz§Ä™˙•§Ä´´§–¨Ú¨–Ú¨œ˝–÷¨÷–¸œz§Å™Äüܧ•ÄÄ•§Ä–˚§Ä§ÄÄ•§Å´T?=Äz§Ä§z´§á§•Ĵħz§Ä–´¨––´Û¨–œ˝Ú¨÷–˛÷¸–÷¨§´ÄûÄ•{™§ÅœÄ•™Åz§´Ä•´S?=z™z´z•yħŕ™z§Ä´–¨–Ú˝Ú¸•™•Äz™z§Å™–˝–≤Û–¨§Ä§zħzħ´•˚§Ä§˚ħ•±R?=ħzħÄûáûħÄÄûÄ´˝–œ˝÷•Äz™Å§ÄûÄz§Äzħ˝–Ú˝÷˝§Å§z™zz§´Äz§Ä•ÄûÜ•–3?=Äz§´Ä§zÄûÄÄz§Äœ˝–≤–ÒzÄz§Ä§zħÄz•z§˚Ä•´Û–÷¨´•§á§Äûá§´§˙§•´™˚–?=z§Ü•Äz§´ÄûÄyŧ÷¨–ڕĕĴy§˘§Ä•ħ•áùÄ˚ħĕÛÛ–˝´§¸Ä§zħûÄÄ´§˙§Û˝?=yÅy§zħá§zÄû´˝œ˝–™zzħÄŧħzĕĴ§Äz§Ä•Üû´˝–≤–´§Å§Ä§Å§§Å§Ä§˚–Û?=y˚y§Äz´ÄûÄħ˝–÷–´˚zz§Ä§Ä•ÄyÄûŧĴzħĴz§´˝–≤–´z§Äħ§•ĕĖ´Û–?=yÄz•ħÄÄûħ˝Ú¸–´§ÅħyÄ•zħÄÄ•§Ä•ÄħzħŧyÅ™–˝˛œá•§áûħ§¨´–´–Ä5?=ħĕħĕÄzœ¨Ú¨•Äùá§•˝¨´zy•´≤–ŧħ˚§Üûá§•ÄÄ•´–≤–´•ħÄÄ•§´¨–Äû™Y?=y˚yħzÄz£˚–˝œ¨üÄħ´˝¨–y˚–˝¨œÄĕħÄz§Ä˙§Ä§z´È–Úá•§Äz§zܧzħ´R?=yŧÄz§Ü•zÒ¸––ܕħzÄœ˝˝–ÄÄ•´÷¨–ħ˙§á§zħzÄ´–¨•≤–÷¨£Å§Ä•zħzħÅN?=Äz§ÄzÄ£z•≤–÷•Äz§ÄzÄ–Ú¨–ÄyÄ´–˝–ÄÄûÄÄ•Äz™Ä¶–´˝˝´Û–÷˙§´Ä§˙•™Äz§ÅV?=yŧyÄz™Å–÷¨œ˚yÄÄûÄ´–˝–ÄÄûÜ•Û˝–´Ä•z´ÄûÄÄ•¨–´˝´–˛–´Äz§zÄħzħÅ[?=yÄz§Äŧ´¨–Úz§˘£Åĕڨ–§Ä•ÄÄœ˝–≤–ÄÄûÄŧÄÄûá–÷¸–´˝œ˛÷zÄz§ÄzħŧÄM?=z™zħÄz÷¨÷•zÄûÄz§¨˝§Ä§zy´•≤–˛˝ûÄzħzÄÄ•÷˝–´•≤––≤•£zÄÄ•Äûá§zU?=yz{§Ä´¨œ‡§zÜ•yáûyÄzħÄÄ•§´˝Û–≤•yzħ˙y•Ü––≤–zÄ–≤–Ú¸§zÄz™zyÄûÅO?=zÄħħ˚÷–´zÄyz§Å•Äz§Üzz™•´–˝˝œ¸Äz§ÄħŖ˝œ˚ûĨږ˝÷zÄûÄÄzûá§T?=yÅ•yĨ––´yÄÄz§ÄzÄz§ÄzÄyÄ´•–÷¨–≤§z˚z§Ä•´Äûĕܕ–≤––´Ä´zħ˚•y^?=yzyÄzÄ–÷˝y˚§ÄħÄÄz§Äzy˚§Ä´´–˝÷–¨Äz§Ä´Ä•Äy˚£˙Äz§÷¨–÷¸™Å§Äz§áûÄW?=O§Äy˚§˝œ¸Ä§Ä˚§zÄzy˚z§zÄ´•Û–≤–Û˚yħŧáz§ÄħzÄ•±–˛–´ÄÄ•yÄ•Äyza?=UûÄyz´–≤´•ÄyÄ•Äy•ÜÄû˘yÄz§´´Û–¨÷¨•§ÅħÄzÄÄûÄÄyzÄ–˝œ‡´Äz§§áz§zÄb?=O™zÄz´–÷•ÄÄyzÄz•yÄzÄyŧ´´Ä–˛–≤–¨û˙ħU•ħÄzz™Ä¶Ú¨÷–zÄÄ•™zÄÄ´d?=y˚z§¨–≤z§y˘yyá•§Äz´˝˝œ¨´z™—˝œ≤–˝ÄûÄzÄħÄÅy•ܕĕœ˝Û˝y´Äz§ÄÄz•A?yÄzħ˝–´z˙§zÄÄyz´zy˛Ä§•´Ä—œ˛˝œ≥´§ÅÄz™Äz§z˛Ä§¸––≤–Ä•ŧÄÄz§k?3y˚zÄ–Û´zyzÄyzÄÄz•zz˚§´´•÷–≤–˝¨•zħ˚yÄ•Äz´z´–≤––˛ÄûÄzÄħh?Uû˛Ä8––ÄÄzÄy§˙z§˘Ä•ûÄĸœ¨–Ú˝–≤–˚yħÄzÄyzÄħ˙§¸œ˛÷˝yzÄÄ•yÄÄûd?+yzÄy˚œ˝´UûÄzÄ˙û˘yzÄ•yyÄ˝–Ú¨÷–˝´zyÄzzÄyÄ•z˛Ä–¨–÷–U§˙y´zÄzÄi?=Ä•§´§¨÷•yÄUûÄzUz§˙zz´zÄœ¨–÷˝œ˝•ÄÄzyyÄÄzáyz§Äz´Û–˝´zħy˙z•Äl> Ä…Üü™¨–™zÄyz˝Ä-zz§¯ûÄħ˚–≤œ–˝•ܧ˘zyyÅyÄzz•Ä˝–¨Ú•zÄÄzzz§á\?=Ä…´´•œ≤§ÅyÄyÄ˙ûV§UzzyÄħŜ¨–±•Ä•ÄyÄzzÄzzyÄĕĖ≤––´UûÄÄzyÄ•Äj?%´•´œ•˝Òzá§zÄyÄzUyzÄyzUz§V•œ˝´ÄûÄÄzÄyz˛Äyzħŧ˝÷˝–´ÄħÅÄyÄûáw?=•™zÄy¨–´zÄUzyÄyzUzyÄzÄyÄzÄy´¨§Äzy˚yU§Ä˙§ÄzÄyĕĖ˛Ò˝•ÄÄzyzz˚x?=O•U§¨–áûVyÄzÄħOyÄzÄÄy˚zÄyÄzÄzÄyzÜ•yzUÄy{™U–¨–Ú¨§ÅzÄÄzy§ÅZ?2Uyz™Pœ˝´ÄÄ•Äyz[zÄyzyÄzÄÄy˘§UzzzyÄyV•ÄzÄy˘y•Ä–≤––´˛ÄzyzÄz•k?=U§ÄzÄ•≤œzzÄzzU´•UÄzyzzUzyÄzy\§ÄzzÅÄzsÄzz˚–≤–Ú˙§ÄzÄyŧyÄz9?=UsÄÄz™˝–zzÄz´¨˝´§OÄyVy•ÄÜzyzz˘yUzÄyzÄyÄÄzzy¨Ú–≤–zyUÄzÄûÄÄyV!?=U§UzzÄ–÷ÄzyÄU•¨–≤•˙ù˘yÄOyÄÄyVyzħ˙yÄOÄÄyzÄzyÛ˛–≤´ûÄUz™˘§zUyz?=UzħÄz≤œ•˘yÄyÅÚ–¨•UyUzyÄzUÄyzÄy˙ÄyÄÄzyzÜzÄzy•Û≤–Û–ÄzyÄÄzÄÄzħ?=Uzyy˘¶Ú´t˘y´–˝–ÄUzyUÄzÄyÄy˘§z[zÄ••´˝´zzÅy¨Ú˝–÷¨–˝§zV•zÅ?=UzzyzÜ–˝y˘y•≤–ÚÅyzÄyÄzUÄyzOzÄzz˘œ≤–¨ÄzÄzzá•Ú–˝÷˝–Ú•V§Äzz
  2697. ?6y˙yUy˙–˛§\•–´ÛÄzyz[zsUÄzzy˘ÄÄzzUœ≠œ˝ÄzÄzzÄzÄÄ–˛Ú–˝–˛Äz§\H?=OzÄzUy´–¨¯§zÄÄyzOzÄyÄz[zÄsÄÄzUÄy¨–÷¨§V§ÄÄzz[zyÄÄ•Ù÷˝•ÄħÄÄe?=UyzyÄV{Ú–´UzyÄzUÄÄyV£Py\yyOÄzyUÄzÄ–˝Ú¨§¯§ÄzÄÄyOÄÄ•˝œ≤–z˙§V£u?=UzzUÄzy•≤÷z˙yyVzOÄzyÄUzUyzUzyy˘Ú¨–÷ÅyUzzzy˘yħ˝´–´•ÄzUzzÉ?=UzyUzzÄz´Û¨zÄyz˘yÄPy[zsUÄy˘Äyz´´–¸yÄOÄzyÄUyzÄ•≤œ¨–ÄzÄÄyÄzÄw=3NzUyz[zOyá–÷´zzUyUyzUÄÄzyUsÄUzOÄzUzzÄÄzzÄzUz§≤ ´–¸Äzzz}?'UzyUy¯û[zyÄ–‡´s[zyUzUzyUÄs\yzy\zzz[zyUz˛Äs˘y´–≤œ¨yzUyÄÄzÄzÄq?4UzUyyVyÄOyU´—Ú•Äy\zyz[zyUy˘y˘zUzyUÄt[yÄzz˘y˝œ¸œ¨Äyz˛ÄzzÄzt?=y\sUÄzNÄÄz˘œ¨Û•´UyzÄÄUzÄyÄUzy\zyUÄzyÄz\yy¯§˝œ¨´–UÄyzÄyVyzVÄ?=N˙yUzOzUyUz¨–˛´œ•[zÄzUyUzÄUz˘zzUyz\yzU§¸÷–´´zyÄOÄÄÅ£Vzt[ ?$NzUy˘yUy˘PzĨœ‡œ¨œ¨y[zsUz[zyVzÄUzy˛ÄUü±–¸œÅħUzyÄ˙yÄUzÄzÄ?/NÄVyÄUzyUOyÄOUy˝–Ú˝´–´´••´œ•´•[zÄzVyÄzU§˝´–¨§Uz˛Ä
  2698. zyÄUzÄy˘Äy$?+NOÄy\sUz˘yUOyUz´Û–˝–´Ä´œ¸´–•Üzy˘z\yzU•œ¨´–˛Äy˙zÄzUyzÄUÄzz~?=UOsVTtUįsUyUz´–˝÷˝´sUÄUû¨™˘ÄÄyz\yÄU•–´–˝y[zÄÄzÄyÄz[tVyÄsáÅ?=Us\sUUyUÄy¯yOÄyO¨Ò–˝÷•UUzÄy˘VÄyz\yz¨–´¨œz[zz˙y˘TzÄy¯zsÅ™ÄÜ?=OTzUy˘UyyVyUOy\s´˛–÷˝´y˘UyzÄ[zUzÄOyy≤–•≤œUzyVyĢyyVÄPzħÄÄzÇ?=UÄyVyÄUOÄOyUz\z´–Û˛–´UÄOyÄUzUyUzÄÄ–´–¨§\zyÄUzUyzUzy\yÄÄœVyzUs?=UyVNy˘UyUzNĢyUN¸–÷˛–´UyVUr˜yVyO˚œ¸–ÚÄz˘yUzUOzÄUsUÄz™˙yzy˘yí?=OUyUyVyUOUs[ÄsVy´˝÷–˝´Oy\Ns\yVyU–´–´–\yzUyUzUy˘yÄVyz[…ÄUzUzÄy}?=N˘UyUOy\yUs\zyUO´–˝Ò˝•Uy˘NzT¯yz´–˝œ´OUzUyUs[zUzy\zyÄ•VyzUzOî?=UyVyUUsUOUyUUzOUœ˝–÷˝´Us\sTOU´–¸œ˝§˘UyzUOOÄyU¯yy¯…Ģy¯ÄyzUzã?=NOUzTOUy˘yUUOyUU¶Ú–÷˝¨yUy˘N˘y¨•–¯zUyOUyÄOUzUyUz´yUzyÄ˙ÄÄyVâ?6UOyUUzUy\s\yNVyU¨œ˛–≤–Uy\yOUzT{ÒONVyUOyUzUyUzOU§Äzy\yzU˛Äzy˘Ç?=NVyO[yUOzUNUOyVyá––≤–˝NUyUUsU¯sTOUzUNyVy\zOV–O¯yyVy˙yÄUzUsÜ?9OUNUy¯yUz[sU˘TOy˚–÷˝÷¸yUyOU¯yOUyUyVy¯UyzUÄÄO•UzUÄsUyVyÄOU˛Äê?=UUyO˘x¯UyUOÄNUOU•Ù–≤–´yU¯zUyUOyUUzUÄz[OyVyÄ•VyUzUzTtUVyzUÄÄé?=OUyUUy¯Uy˘TOOyNU¸–≤––´UyˆyzUUyUOUsVOOUUs[…VyUÄOUyz[ÄzÄUzyÄVç?=NON1yOOUy\s[¯sUU´–´Í–±OONz[zUNVyUUsUOÄUO§Äz[sVy[Oy¯yUs˘¯§˘yUç?=NOUUOUNUsUVyUUNO´–˝œ˛¨NOUOTzUUyO\yUs\y¯œ˘NUy¯yUzUsUÄUzy\zÄUyÄñ
  2699. d°dONLNdî/\8È(Uz"The stone jigsaw puzzle was pieced°dONLNd∑;\Dfl*  together by Hal Rucker of Rucker°dONLNdÿG\P›*  Huggins using Adobe Illustrator,°dONLNd˘S\\Ú* #FontMonger, Ray Dream Designer 2.0,°dONLNd_\hµ* and Adobe Photoshop.°dONLNd2z\ÉÔ*%develop, The Apple Technical Journal,°dONLNdWzÔɡ)ì is a°dONLNd]Ü\èı(¨z&quarterly publication of the Developer°dONLNdÑí\õ»* Support Information group.°dONLNdü≠\∂m*The °dONLNd£≠m∂æ)Developer CD Series°dONLNd∂≠æ∂fi)Q     disc for°dONLNd¿π\¬Ê(flzNovember/December 1992 or later°dONLNd‡≈\Œ¸* *contains this issue and all back issues of°dONLNd —\⁄z* develop°dONLNd—z⁄È) along with the code that the°dONLNd0›\Ê≤(zarticles describe. The °dONLNdG›≤Ê“)Vdevelop °dONLNdO›“Ê˚) 
  2700. issues and°dONLNdZÈ\ÚÒ(z$code are also available on AppleLink°dONLNdı\˛˙* 'and via anonymous ftp on ftp.apple.com. s9s/ˇ◊#ˇ ˇˇˇˇ#◊ 
  2701. d,     Helvetica
  2702. .°dONLNd"2)+<ME°dONLNd",28)D°dONLNd";2?)I°dONLNd"B2J)T°dONLNd"M2Z) O°dONLNd"]2i)R°dONLNd"l2p)I°dONLNd"s2~)A°dONLNd"Å2ä)L, Palatino
  2703. °dONLNd
  2704. %ü1()Playing the postdating game   
  2705.     °dONLNd(&(1.)â2
  2706. °dONLNd+C1S:(nOL°dONLNd,C=SH) E°dONLNd-CKSS)T°dONLNd.CVS^) T°dONLNd/CaSl) E°dONLNd0CoS{)R°dONLNd1C~Sä)S
  2707. °dONLNd3FüRÙ)!CDs lost in space.   
  2708.     °dONLNdHGÙR˙)U4
  2709. °dONLNdKd&t1(èDA°dONLNdLd4t@)R°dONLNdMdCtK)T°dONLNdNdNtR) I°dONLNdOdUta)C°dONLNdPddtm)L°dONLNdQdpt{) E°dONLNdRd~tä)S
  2710. °dONLNdTgüsæ)!1Techniques for Writing and Debugging Components  
  2711.     °dONLNdÖhæsÂ(è‹by Gary°dONLNdçuüÄ"(úΩWoodcock and Casey King
  2712. °dONLNd§t"Ä+)É   °dONLNdßt+Ä)    0Components aren’t just for QuickTime programmers°dONLNdÿÅüçœ(©Ω anymore.   
  2713.     °dONLNd„Çœç’)07
  2714. °dONLNdÁûü™Å(ΔΩ(Time Bases: The Heartbeat of QuickTime  
  2715.     °dONLNdüÅ™È)‚by Guillermo A. Ortiz
  2716. °dONLNd'´ü∑    (”ΩMUnderstanding and manipulating time bases directly is sometimes helpful. Here°dONLNdu∏üƒ„*
  2717. are some tips.   
  2718.     °dONLNdÜπ„ƒÔ)D41
  2719. °dONLNdã’ü·ï(˝Ω+Better Apple Event Coding Through Objects  
  2720.     °dONLNd∂÷ï·)ˆby Eric M. Berdahl
  2721. °dONLNdÀ‚üÓ˝(
  2722. ΩLAdding object model support to your existing OOP code may be easier than you°dONLNdÔü˚¬*
  2723.     think.   
  2724.     °dONLNd!¬˚Œ)#58
  2725. °dONLNd& üÁ(4Ω;Another Take on Globals in Standalone Code  by Keith Rollin
  2726.     °dONLNda
  2727. Á(4   
  2728. °dONLNdd ˇ)    For°dONLNdhü%(AΩMMPW users, here’s an alternative way to implement globals in standalone code.
  2729.     °dONLNd∏'ü2´*
  2730. 89
  2731. °dONLNdºD'T3(oEC°dONLNdΩD6TC)O°dONLNdæDFTO)L°dONLNdøDRT]) U°dONLNd¿D`Tm)M°dONLNd¡DpT{)N°dONLNd¬D~Tä)S
  2732. °dONLNdƒGüS—)!3Be Our Guest: Components and C++ Classes Compared  
  2733.     °dONLNd˜H—S¸(oÔby David°dONLNdUü`“(|Ω
  2734. Van Brink 
  2735. °dONLNd T“`ÿ)3  °dONLNd
  2736. Tÿ`Ù)=Components and C++ classes have some surface similarities but°dONLNdKaümM(âΩ(underneath are very different beasts.   
  2737.     °dONLNdsbMmY)Æ37
  2738. °dONLNdx~üä(¶Ω+Graphical Truffles: Animation at a Glance  
  2739.     °dONLNd£ä√)‡
  2740. by Edgar Lee 
  2741. °dONLNd∞~√ä…)D  °dONLNd≤~…ä˝) Three basic°dONLNdæãüóä(≥Ω3animation techniques everyone should know about.   
  2742.     °dONLNdÒåäóñ)Î53
  2743. °dONLNdˆ®ü¥ä(–Ω+Print Hints: Top 10 Printing Misdemeanors  
  2744.     °dONLNd!©ä¥)Îby Pete (“Luke”) Alexander
  2745. °dONLNd>µü¡∞(›Ω?You know the felonies, now learn the lesser printing crimes.   
  2746.     °dONLNd}∂∞¡º(›Œ84
  2747. °dONLNdÇ“üfix(˙Ω%KON & BAL’s Puzzle Page: A Micro Bug 
  2748.     °dONLNdß”xfi¸)Ÿ by Konstantin Othmer and°dONLNd¡‡üÎ⁄(Ω Bruce Leak 
  2749. °dONLNdÃfl⁄·);  °dONLNdŒfl‡ÎÛ)=Remember that little built-in debugger that no one ever uses?°dONLNd
  2750. Ïü¯‘(Ω
  2751. People do.   
  2752.     °dONLNdÌ‘¯Ê)5134
  2753. °dONLNd
  2754. S`(5qQ°dONLNd 
  2755. cg) °dONLNd!
  2756. ju)&°dONLNd"
  2757. x|) °dONLNd#
  2758. ä)A
  2759. °dONLNd%
  2760. ü) Macintosh Q & A   °dONLNd7
  2761. ˝)b5Apple’s Developer Support Center answers your product°dONLNdmü&(BΩdevelopment questions.   
  2762.     °dONLNdÜ& )o120
  2763. °dONLNdã8MHQ(ckI°dONLNdå8TH_)N°dONLNdç8bHn)D°dONLNdé8qH|)E°dONLNdè8Hä)X
  2764.     °dONLNdë<üG±) 138 w4w, New York
  2765. (z 
  2766. +
  2767. 1
  2768. (éª0© 1992 Apple Computer, Inc. All rights reserved.*gApple, the Apple logo, APDA, AppleLink, AppleTalk, ImageWriter, LaserWriter, MacApp, Macintosh, MacTCP,*    jMPW, MultiFinder, SADE, and StyleWriter are trademarks of Apple Computer, Inc., registered in the U.S. and*    fother countries. develop, Finder, Macintosh Quadra, MacroMaker, PowerBook, QuickDraw, QuickTime, Sound*    iManager, and System 7 are trademarks of Apple Computer, Inc. PostScript and Adobe are trademarks of Adobe*    nSystems Incorporated, which may be registered in certain jurisdictions. HyperCard is a registered trademark of*    lClaris Corporation. NuBus is a trademark of Texas Instruments. UNIX is a registered trademark of UNIX System*    TLaboratories, Inc. All other trademarks are the property of their respective owners.(Ú‹
  2769. CONTENTS  
  2770. )*
  2771. December 1992ˇ4‹◊#ˇ ˇˇˇˇ#◊ 
  2772. d,     Helvetica
  2773. .°dONLNd9'ç+WB    EDITORIAL0ú1.´
  2774. ù2-™òÄ<êxHH
  2775. h¯€ˇˇˇˇˇˇÓÓÓÓÓÓ››››››ÃÃÃÃÃꪪªªª™™™™™™ôôôôôôààààààwwwwww    ffffff
  2776. UUUUUU DDDDDD 333333
  2777. """"""êxù2-™#3˘2"˛2"2"2"2¯"˛2""˙!"˛!"Ù!"".˙#"#˜"˛""˛"#˛"˛˝
  2778. "˛"ı2"2˝"!˜"2˝"!!¸!""¯!!!"!" ˚#"#¯"""¸˚"˛¸¸˘˛"(˛3˜2"2˛"2˚"!""2"2˛"˘!"!"!"˛!"˚!""$3˘#"#˘"˛"¯"˛˘˛˝#332323˚2˛"2""2Ú"¯!"˝!¸!"˛!",33##"˛#""#¯"˝"""˛"˝˛˝˙˛)C3C33˛2323˘2!˚"˛2"2""!""˘!""¯!"!"")34˛3˝#"#ı"˝"#˝"˛˘˛'CDCC33˙2"˝2˙"2"˛2"2!"ı!!˝!¸!"'34˝3˝#¯"#¸"˛#˛"˛˛˘˛"'CCD˛C˛3˝2"˛2"˚2
  2779. 323DC32"2""¯!"Ù!"",3˝433#3˛#""#"#"˛# 33#VfgfeC3""Ò˝˛%CDCD˛C3˜23DTUDEàwàôñT322˛"Ô!˝!".3¸4˛3˛#""˝#4WxààââäôöôáT3""¸˝¸˚"-DDCCD˝C33¸2
  2780. 3Dgàôô™ª∫´ª˛™ñS3˝"˙!"˛!"˜!"0˙4˝3##"##4Vxxâõºº™´ºº´ºπu3˛"¸˛˛˝)˘C˙3Dgàòöº™ªÀ´Õ›‹Ì€∫©t2˝"˜!""˛!!!!"-34˜3#33Fòôâ≠Ωª∫õÃªΩ›fiÀ™áàC""ˆ˛3˛C3C3C3C3C˛3Uz©àö€›ªπº‹ª´›Ì‹€©àc32"!"˚!˝"!"˙!""-˙3##˛34Ew™àâ´ª⁄Ã∫Ω‹´´ÕΩ‹Õ€ò¶3""˝˜¸4CC˛3C˚34Uxπ™ª∫ÀÃ̪̀ªÀ‹‹€ÃÌò∫tC""˙!"!˝"˛!˛!"93433#˛3!#33#3gä´ÀÀ™ªΩ›´º™æÕ‹À´¨fiòº∫c""¸"˝˝1˛C3C˙3Dwª‹›€∫™ÕÌ…™öÕ›ª∫òõfiªÀ‹ï2""˛!"!˙"!"˚!"344¸3#3#34FäæÕfiÃ∫´º›ô´≠Ω› wVfúº›Ω C"˘˝"˛,˛C˘3DV´‹ÌÌÀ Ãº›∏ôºÃ€∑uUf{ª›€ c2¸!¯"˛!˛!"834˝3#3##3FW™ú›Õê ¨Ωπö˛™    vD4Eh¨›ÕÃÑ˛"˝"""˛˛˛"3¸C$33C33DehòΩÌ›‹À… ¨…óxòádCDTf¨‹‹Ã•B2"!!¸"2¸"¸!""24˘3#5UX䨛պ©{∫€ªwVUD334EF¨ÃÕîS"¸"¸"˝3˘C33Dey∫ºÌ€™á´º€ªáTTCC3DDVãËÅt2"¸!""2"2""˝!˛"533#334˛34EV™ÀΩ›À™™öΩÃÕªuD#334DFh¨Ã›ÀñB"¸˚"˛˝"533˚C34UWª‹ΩÌ€™©´Ã€›ÏΔD˛3 CDUg´‹Ì⁄∏b""˛!""¸2""˛!˝"5¸34434DgzõÕÆ‹Ãö´´∫ߌΪT˛3 4DEV{ΩÃÙÜ""˛˝"#"#""˚":˛3C3˛C"DDWô´ºÕ⁄À∫ª∫∫ÜÕÎÀTCC3DDTVx›ÏÃ∫Ü2""!˝"2"22˛"!˝"2/¸3#433EDHòöΩΩª™º´¨©gΩÀ∫T3#34DDEWÕ€ª´ñ2"˝˙"˙",˛3˝C DETh©™Õ›π©∫»àááÕŸ∏SC33CDDUf≠π™ª∑2¸"˚2¯"63#˛3˛4UDXäõÃŒòyáúò䙺xï˛3 434DFyù®®å∑2"˛˝"#˚"˛""3˛3˛CDDeUx´´‹ÕπwwâÕÀ …wÑC˛3 CDDh®õ ®ã®c2˚"2"˛2˙"23*33443445EWy™¨Õº™vgfVxöòyT##344DG©Ujºâö¶e"Ù"""433CC˝D%Vwô∫ªÃÃπÜwueä™´®S33CDDTiñVy‹ô∫…cB2"!2"¯2˝"2933˝4DEXöªºÀ´Õ∫wgxwx¨ª¶43˛4DGáàx®≠Àª´•D""˝"#"#"#¸"";C3˛C$DDUWÕ‹ π´›»wá®Üôº ÖDCTDCDWö¨y∏}‹‹…ôv2˛"2"¸23˛2"2""/˛3˛4#DEWÕÃÀ™º≠‹wáâ{㨮eVxáeC3IÜgfVY›‹∫™Ö2¯"˛#˚"933CDCDDUgÕ› ™™›Ì∑Üòöª€ßܲwuC3WuUeUVÌ‹∫ ÖB2"2"2"˝2˛3˝2"333˝4#DEXΩ›∫©â¨‹´wàä¨∫weEháeD#6ffT4FÕ ´ºTC˚"#"˚#˝":˛C(DCDDTgºÓ‹ôÜõ π∑áàª∏ñTFóátC3EeDC3EúÕÕÏÑB22˛"2"22¸32""2533˛4$DEWiúfi›ªââäâªßázòuF´ÑVD344U334E|ÃΩÕdB˙"˝#3#3˝"7CDC˛D#UhäúÓÌ‹«òàöÀ∏∑òáukáefdCTDUTCDEl››‹uB˛2"2"22˙3˛24¸4%DEg´ºÕ›À™ªàä´∫´äßUeDDe34ED6UD4ElÕÕÃe33¸"˝#˛3##˛":CDC˛D$Tx´À›⁄ºÀàöºπô ππeTEeS3DUSEfeTU|›‹€ÜTT˛2"˝233CC3˝23¸4DEi¨ÃÃÀ´¨∏yôáãàö®S¸34ED4VvUV|Õ›ÀvUD˚"˛#3443#˛"<DCC˛D%föª›‹€ ªÃxö™ªv∫∑S2233CDUdCVxvgõÕ›‹óuDC˛2"2"33˝C322":D˛4DEHàã€fi›…™™âäöòjówC˛#34UVT3FgxxãÃÕ€∑eD4#¸"##˛433˛"8¸D&UgvãÛÓÙ´…àâ©ÍváTD233VfUeTVáxàz‹ ÀÀñUd˝2""33CDCC3˛29¸D(EVwzºΩfiº´´ªòöº©áóUD334WVVfUWwxWkÕºª™àfD3#˝"    #33443##"";TD˝T-VwâÕÛº‹ÀÀ∫©™©´«eTDDEuUwàáààóglÃÃÀπÜdCC22"2233˛DCC˛2:˛D,4DDEWyÕ€ÕÀ‹⁄ªπz´™¨∑fUUDFTEEhã™ΩfV]›Õª∫áD33##"˝#44D43˛#:-TDDTDTUfz››Ã ›º‹Ãª›Ï∫®fveUwdTTUwπ∫uv≠‹ÀàÖTCC3˝2˛3DDCC˛2:¸D%EUgj››Õ ÕÃÕÀºÕ ¨®fwffwUEVfxwjeVfi‹´ºπvD˛3##"˛#344˛3""<TDTDTUgá|Ã̛̺››‹ÃÃπ›∏e˛wvâóuTD4YvfÌκÀ∫ÖTCC33˛233CDDCC˛2:˝D)Ewwy¨º›fifiÕ›ÃÃÀº º»eUfWlµeC3#$ôf{›ªΩº…uDD33˛#"##3˛43˛#=T˛D7Thô∫ÃÛ›fiÌfiÌ››Ã€À»uUeUeßuCC2Gàvé‹ÀºÃ™ÖTDC332"2233CCDC3228˛D*4DVõ™¨Õ‹ÕŒÓÓfiÕŒ›Ã›ÀeDEDDFfVEgwófé›ÃúªuD433˙#34433##<TDTDUg䪪ÀÛ›fiÓÌÌ›Óϛ̶e˝TgvUfxwvΩ›‹€ÀÀÜTDCC3232˛3CDCC3328˝DEWz™ººÕÕΩ›flÕ›Õfi›ΩÓπe˝DF˛gffW՛úΩÀáUDD33¸#33˛43##;#TTDTEV©πªÃ›› ª‹Ì ö‹›ÌÓÎódUDTUTTUeffÌ˛‹À€ßdTCC33˛2323˛C˛39˝D-EWwö≠›ÕÀÃÕ∫¨ò´∫º€Ó›©fEDEEDDEEVY›ÀºÃÕÀ∑TD443##"˛#344˝38¸TVóöõÕ›Œ›‹Ãπö´´ÃÃ˛Ì€áTd˝TDTVjÌÓÌÓÏÃ∏eTTC˛32˝3D˛C335˛D+EEVwôõÃÕ››ŒÕ ´ÕºÃÆÓÃÃπvFDEDD4EVlfi‹ÕÓ›ª∫eDD33˙#˛4˛33¸TVà∫¨‹˛Ì‹‹›˝‹ΩÓ€ªÀóeeTTDDegΩÌÕ›ÌÏÃÀuTDC˝3232˙C:E˛D EVy™´ΩÕfifiÛ›Õ˛›Ωfl∫ö´πfVEEDEfYfifiÃfi›ÕÃ…fDD˛3¸#344˛34:˛T+DUW©ÀÀ̛ӛÛ›‹ÌÏÌ‹fl…áàôπ®àvvw™ÃÔÓÓÌ›‹ÀŸeTTDC¸3CCDD˛CD8˝D*EXõ¨››Œ›ŒÃÕfiÃÕ›Õ‹›…gxxôöôôâö¨ΩÓfl›Õ›∫Ã∏fDE44˝3#¸4344;TU˛T
  2781. gºÃÕ›ÌÌ››ΩÌ˛›€∫›ÿvfwáâö™™∫ªº˛ˇÓÌ‹ÀÀ…uTTDCC¸3CDD˛CD:"EEDDEYÕú‹Õ›‹fi››ÕÕº¨ªºπvUfggxââö´ºÔ˛Ó ÕÃ∫xeDD˝3#33¸434<U˛TUiÕÌÃÎΩÓ›Ì˛ÌÌ‹‹ÀºÃŸÜUUv˛wàôªº˛˛ÓÏ΋̟ÜeTDTC˝3CC˛DCCD8U˝E0YÆ›Ω€ΩŒÓ›ÓfiÓÕ›ÃÕàvUDffggwy´¨ÔÓÓ›Õfi›«fUEDD4433#33˚4<1TUTUTf∫ÓÀÓÃÓÌÓÓ˛fiÓÌÓÌ‹ÀÜTTDVefgàö¨˛ÓÏ€‹ÓÓÌ‹∑eTDD3C˛3CCDC˛D6U˝EWzÕÃæŒŒfififlÓ›fififlfi›Õ∑U˛DEVfgäúŒ›fi‹ºÓfiÓ›ÃÀeDD¸3˚4D8˛U#TUf´›ÏŒ››ÓÓÔÏ›ÓÌÓ˛›Ì«eDTTUUfwô´ÓÌÓ‹Ã˛Ó Ì‹Ã∏eTDCC3CC˚D<U˛EUV䌛ŒŒfi˛›! Õ››fifi›fiÿUEDDEEVgâõÕÓÓ‹ÃÕfifi›Ãê∫TD˝4344DDED;UUTUUfäÌ‹Ófi̛̛‹˛›ÏÓÌÌÿeTDDTUUgâ´Ã˛Ì›‹fiÌÌ›˛ÀtD˝CDC˝DT<UUEEUW|›fiŒfiŒÔ˛fifi›fiÕŒÔÔ› d˛DEUVgàõ´ŒÓÌ›ÀÕŒ›Ãººª≈DD˛4˛DEDDE8˛UTUVå›Ì›Ó›ˇˇ˛Ó››ÌÌÓ˛ÓÈd˛DUUfáw™öΩÌ˝ÓÏÓÓÌ‹˛Ã…TT˝D˝TˇU6UEUEUW´ÕŒ˛Ó flÌÓÓÕfiÓfi›fi›óUD4DEUWfgôâòŒÓÓfifiÓ›ÃÃ˛º∂¸D˚E:˝UTgõÕÓ˛Ì˝Ó"Ì›˛Ớ̀ÖTDCDDUefg®àà¨ÓÓÌÓÓ›‹ÃÃÀÃ∫e˛TUTUUTUU8EU˛EgõÕfiflÓÓfi›fiÕfiÔ›‹Õ∫vUD˝4EEUWàxwxãŒfi››ÃÃ˛ºê∑˙EUEE6¸UföÕfiÓ˛˛Ó›Ï‹ÌÓ›ÀÀÜeT˝DTTUUgàávww≠Ì››‹À˛Ã˛Àu˝Uee˛U/¸U!FiºÕŒÓ›fi›fifiΩºª©®UD44344EDEEgxgVVgΩ˛Õ˙ºöE˘U6Ue˛UVw©∫ÌÓÌ›ÌÓ˛Ì›‹‹®eDCC˛DUTTUfàuef{ËËÀ˛ÃÀ‹ÃÃΔ¯e9˝UEEVxãfi›ÓÕflfifiÓÓÌfi€eD3˛4D˛EVewfUf˝Ãª˝ºªººÕßf˛VUVUUV5eUe˝Ufy›Ó˛˛Ó˛ÌÓÓ˛ÓÓ«d˛CDDTTUUewfVãˋê˙ÃÕÀ˚feff6EEUEU˛EV}Ófi›Õ›Õ‹ÕflÔ˛ÕÃπv˛DEEUVVggú˛ºÃúº˛ÃººÃÕº¯f:eeUeUUTUU{‹›ÃˋË›ÓÌ‹‹ÃÀπuU˛efvöª˛Ã
  2782. ‹ÃÀÃÀÀËÀÃÀ‹ÃÜ˚vff8UV˝U˛EiÕÃÃ˛ºÃ˛º ÕÕÃúúÕúºÕÃ˝ºÃ…‹¸º
  2783. ÃÃΩÃÃΩ«ggwg˛fg<ef˛eUeUUl‹‹˛Ã
  2784. ÀÃÃÀÀË‹Ã‹Ã˛‹Ë˝ÃÀÃÀ‹ÀÃÀÀÃËÃÕ‹€› wwá˛wvw2fVUVVUUEUlÕÕúê˚º˛ÃÕÃÃÕÃúÕÃ˛ºÃ긺ÕºΩ‹‹ÕÃá˙w5ff¸eUUÕ›‹À˛Ã˙ÀËË‹ÃËË‹ÀÃÃÀªÀÀ˛Ã‹ÃÃÕ‹€Ã‹∑˝áwwá7f˛V˝UV˛ÕúÕúºªºªº´ºªÃÃÕÕ˙úªººª˛º
  2785. ÃΩÃÕÕÃÕª∫xw˛xwx2˛f˝e UfÕ››€ÀÃÎÀÀÃøÀÃ˛‹›‹›˛‹˙À
  2786. ÃÀËÃÕfiÀ›ÃÀ˝àáàá4fVfVfVVUV›ÕՋúÕÃ˛ºÃ˘ºÃ˝º    ªºªºªººÀú˛ÃºÕºÃººôâ¸à8efefeffef›‹ÀÕ‹ÀÃÏ€À‹˚ÀÃÀÃÃÀÃ˝ÀÃÀÃ˝À‹‹ÀÃÏÃÀÃÃ…òôòôòò2˛Vf˝V    YՋúΩêΩÃ˛ºúÃ˚ºúªªºÃ˝º˛ª
  2787. ººÕÃ˺ºÕÀΩ˚ô5v¸feek››˛Ã›ÀÃÌÀ˛Ã‹À˙ËÃÀÀ˝ÃÀ˝Ã›‹€ÃÏÃˋé©™©©ô5fV¸fVl›ÕÃ˛ºÃºÕúÃúª¸ºÕÃ˝ºªÃ˚ºÃÕ›ÃËΩúÃÃ∫ö™™öö3˘fl˛‹˛À
  2788. Õ€‹ÏºÃ‹ÀÀÃÀ¸ÃÀÃÃÀÀ«‹ÃÀÀÃÀÃÛÃË‹ÀÃË ∫∫˛™6˙f Vm›ÃúºªºÃºÕ˛Ãºªª˛º˛ÃººÃ˛ºÃºÃ˝ºª›Ã˲ºÃú´´™ö´/v¸fvv|››€‹˛ÀˋϯÃÀ‹˘Ã˛ÀÃÃ˛‹ËËËÃÕ˛ª∫∫7˙fg}Õ›ÃêªÃºÃÕÕººÃººÃ˛ºúºÃºÃ˛ºúºÃ˛ºÕ‹˝ÃºÃºΩÀª´ª´0˛fvf˛v}››‹¸À
  2789. Õ‹›ÃÀÀÀ‹ÃÃÀÃÀ˙Ã˚ÀÃՋË˲ÃÕÀ˝ª6¸fgff}Õ›Õê˛ºÃÃÕ€Ã˛º˛Ã¸ºÃ˛ºÀºÃººª˛º‹˛ÃºÃººÕÃ˛ª´8˝v wvvwç›ÌÛ‹ÀÀø‹›‹ÃÃÀË˛Ã€˛Ã‹˛ÃÀ˛Ã‹ÃÌÃ˛‹˛Ã‹Ã€ÃÀÀ<ffgf˝g}Õ›Ã՛êÕÃÕÃŒΩÕ˛ÃººÃÃ˛ºÃÃ˛º úºªººÃÃŒÃÕú˛Ã‹Ω˛Ãª3¸v˛wú››‹‹Ã‹‹À˛‹Õ˛‹˲ÃÀÀÃÀ˙ÃÀ¸Ã
  2790. ՋՋËÃËÃË‹€5˘gç˛ÕúºÕ˝ÃÕÃÕպúÃÃ˛º
  2791. úºÃººÃººÃÃ˛ºΩ›˛ÕúºÃÃÕ˛Ã6wwv˛wáwù˛›ÕÃø‹
  2792. ›Ï‹‹Ã‹Ã‹‹º‹˝Ã‹˛ÃÀÃ˲Ëϛ‹‹˙Ë‹; wgwwgwgwùÕ››˛Ã
  2793. ÕÕÃú՛ÕúÀ˛Ã˛ºúº˛ÃººÃºÃºÃºÃ˛ÕÃÕú˝ÃÕÕ6˚wáwùÛ›‹˛Ã˛ÀÃÕÌÕ˛‹ÀÃÃÀÀÃÀ˛ÃÀÃËÀ¸Ã‹fi›˛‹{ÃËÛ‹›;wwgg˝w≠ÕÕ›ÃÃ˛ºÕ˛Ã›ÕÕÃúÀººªºªººÃºÕÃú˝ÃºÃÕÕÃÃ∂6ºÃªªÃÃÕ;áwáw˝áΩ‹››˛‹››‹ÌÏ‹fi˛‹˲ÃÀ˛ÃÀÃË‹˛Ã‹Ã˝‹ Ì››SEÀÜUÛ‹6˚wxw≠ÕÕ›ÕÃÕ›ÃÃÕÓÕ›‹››ºÃº˛Ã˝º˛ÃÕÃÃÕÃÃÕÃÃÕ›Õ…THªvT4ΩÃÕ4˘áΩ›‹››Ï˛Ã
  2794. ÕÌ‘MÔÏÌ‹ÃÀËÀ˚ËËËÀËË‹›‹«el≈TUW€‹‹5˛wxw˛xÕ›Õ՛úúÕÕ≈GŒ››Ãºº˛ÃººÃ˝º˘ÃºÃÕÕ›áVäeDE|uÃÕ8˝áàáàà‹˛›‹Ã‹ÃÀÃ÷V‹˝›‹Ã‹Ã‹ÃÃÀ¸Ã‹›˝‹ËË‹›ÍvxuCV{ï4¨À4ww˝xàx˛›Õ˛ÃºÃºº«Vú›Õ˚Ã˛ºú˛ÃÕÕ˝Ã¸Õ
  2795. ◊VgT4G∂EEºº2˛áàá˛à‹ÏË˝Ã€˛Àv}››˝‹˙˸Ã‹Ã˛‹˛›
  2796. ÜVeCDßTDlÀÃ7wxx˛àxâÃÕÃúºÃfiúºÃwh›Œ˛Ãպúº˙úÃÃÕÃÃ˝›eGT4GT4D˛º6á˛à˛òô‹›˛‹ ÃÃTVxªÀ÷fÕ››˝‹ÃÃÀ˚Ã˝‹›‹‹˛Ì ÎÜgTVeTES\ÃÃ;xx¸àyÃÕ›Ã˛º35Fh´ΔE~fi›ÃÕÃúúúº˛ÃÕÃÕÃÕÃÕÓfi›€uwUgU5UD|ú9á˛àòòàò‹Ã‹‹˛Ãu˛TVxeZfi˝‹˝ÃÀÃË˝Ã‹›‹‹›˛ÌÌÈuÜUvTVdEÏÃÃ7w˛x˝àÃÃÕ˛Ã ºŸDUDDVeVŒÕÕ˚úú˝Ãº˛ÃÕŒÓfifiÈfvFfUfDCŒfi›9ááàà˝ò‹‹›‹Ã˛̅dCDVvÕ››˝‹˝Ã‹Ã˛‹Ë‹›‹fi˛ÓÓÿguVuVTD´Ã‹Ã;wxxyàâàâ‹ÃÕÃΩººΩÕ›ÑDDFvmÕ›Ì˛ÃÕ˝ºÃÕÃÕŒÕÃÕÕ˝Ó ∏gffUVTEººÃÃ8˛á
  2797. àòàòô¨‹›‹À‹˛Ã‹Ã«eTgl››˛‹¸Ã˛‹››Ì››‹›Ì˛ÌÌówevfwe|‹‹ÀÃ;w˛xà˛âå˛ÕÃúºÃúŒÖDGzÕ›ÃÕ¸ÃÕÕÃÕ›fifi›˛ÕflÔÓfiáfVfVhò¨ÃÕÕÃ6àá˛à˛ô¨‹››˛‹
  2798. ÀÃÀÀ∏ÜUUx››˙‹˛›ÌÌÓ›˛‹
  2799. ›Ó˛˛ÍáfvväªÃÀÃ˛‹< ààxàââôâúÃÕÕ˛Ã ÕîvVVfUi›Õ›˛Õ
  2800. ›ÃÕ››Õfifi››ÕÕ›Õ˛Ó⁄ággäª˝ºÃÕÃ:òòàòò˛ô¨‹‹›‹Ã∏uUTCCEffVõ˝›    Ì‹Ì‹Ì››ÌÌÏ˝‹
  2801. fiˇÓˇ…óvyÏËÃÃÀ˛‹:˝à
  2802. âôâôõ‹ÃÕûS˛D
  2803. 44EVVfx›Õ›fi˛›ÕfiÕÕfi››˛ÕŒfiÓfifl⁄ôvKúÃÕê˛Õ;˛òà˝ô´‹››‹»TUeUUgvUUfxú˛Ìӛ̛ÌÌfiÌ›‹›‹›fiˇ˛ÌÓÈπ´ÃÃ˛‹À‹Ã‹‹9àà˛âôôöú›ÕÕÃΩàwâ™öúwfUVfz¸fi››fi›fifi›˝ÕÔÓÓ›ÕÀ˛ºÃÕÕ˝ÃÕÕ9òôôò˛ô©¨Ì‹›‹ÃÓ›‹‹Ã‹‹ñuTfWÕÓÓ˛Ì›ÓÌÓÌ˛›Õ›˛˛Ì‹˛Ã‹Ã˙‹Û6˝â˛ô    öùfiÕÕÃÃÕú˛ÃºfieEFgèfifi›fiÌÕÓ›fi››ÕÕ›fiÔÓÃÃ˛º˝Ã˝ÕÃÃÕ
  2804. d
  2805. °dONLNd
  2806. $m(@,
  2807. CAROLINE ROSE, Palatino°dONLNd~ñä◊(¶¥
  2808. Dear Readers,°dONLNd&ññ¢¯*IThe more observant among you may have noticed that we’ve made yet another°dONLNdp¢ñÆ√*
  2809. change to °dONLNdz¢√ÆÍ)-develop °dONLNdÇ¢ÍÆ)'=with respect to how it’s dated. The last change happened with°dONLNd¿Æñ∫ (÷¥RIssue 10, when we stopped designating issues with the current season and went back°dONLNd∫ñΔ* Sto using the current month, because the season isn’t the same around the world. Now°dONLNdgΔñ“¯* Hwe’ve  moved the date ahead by one month — also to accommodate worldwide°dONLNd∞“ñfiœ*
  2810. distribution.°dONLNdæÍñˆq*2For the terminally curious, here are the details: °dONLNdÍqˆ≠)€ Apple Direct°dONLNd¸Í≠ˆ¯)<, our vanguard of°dONLNdˆñ
  2811. (¥Tinformation for business and technical decison makers, doesn’t reach other countries°dONLNdcñ
  2812. * Vuntil two to eight weeks after it’s distributed in the U.S.; it might, for example, be°dONLNd∫ñˇ* Pfolded into a local mailing whose schedule doesn’t coincide. So by the time some°dONLNd ñ&* non-U.S. developers see °dONLNd#&?)m Apple Direct°dONLNd/?&¸)<+, they think they’ve been sent a past issue°dONLNd[&ñ2(N¥Vrather than the latest one. To help convey to them that it is indeed the latest issue,°dONLNd≤2ñ>Ã* Fit’s now dated with a month that’s closer to when they’ll see it. The °dONLNd¯2Ã>
  2813. (ZÍ Developer CD°dONLNd>ñJ¥(f¥Series °dONLNd >¥JÀ)disc, °dONLNd>ÀJ) Apple Direct°dONLNd>J)<, and °dONLNd$>JF)develop °dONLNd,>FJ
  2814. )'.all need to be in sync — so there you have it.°dONLNd[JñV5(r¥"What is now the December issue of °dONLNd}J5VZ)üdevelop°dONLNdÑJZV
  2815. )%' was the Autumn issue last year and the°dONLNd¨Vñb˜(~¥NOctober issue in 1990 (when our production cycle was a month out of phase from°dONLNd˚bñn* Swhere it is now). Anyway, we hope those of you in the U.S. agree there’s no harm in°dONLNdOnñz* a little time travel forward.°dONLNdmÜñí *QA little time travel forward would be really handy for me while I’m writing these°dONLNdøíñû≠* >editorials, because I don’t always know what the state of the °dONLNd˝í≠û“(∫Àdevelop°dONLNdí“û¯)%-related°dONLNd
  2816. ûñ™(Δ¥Qworld will be two months in advance (that’s the lag time before you actually read°dONLNd_™ñ∂¥* Ethis). In Issue 11’s editorial, for example, I couldn’t alert you to °dONLNd§™¥∂Ÿ(““develop°dONLNd´™Ÿ∂
  2817. )%
  2818. ’s being in a°dONLNdπ∂ñ¬È(fi¥new format on the °dONLNdÀ∂ȬH)SDeveloper CD Series°dONLNdfi∂H¬)_. disc, because at that time we weren’t sure it°dONLNd
  2819. ¬ñŒÏ(Í¥Kwould make it onto that disc. Yes, we’ve responded to your complaints about°dONLNdYŒñ⁄ª* develop°dONLNd`Œª⁄˝)%
  2820.  in HyperCard
  2821. °dONLNdmœ˝◊(Ù® 
  2822. °dONLNdoŒ⁄+6by switching to that popular viewing tool that you may°dONLNd¶⁄ñÊ˛(¥Jknow as “BlueNote” — now “Apple DocViewer” — the same tool that’s used for°dONLNdÒÊñÚΩ* viewing °dONLNd˘ÊΩÚ#)'New Inside Macintosh°dONLNd
  2823. Ê#Ú&)f.°dONLNd˛ñ
  2824. (&¥LThe Developer CD corresponding to Issue 11 contained a prerelease version of°dONLNd]
  2825. ñ* PDocViewer that still needed some work; for example, it wouldn’t work at all on a°dONLNdÆñ" * RMacintosh Plus. In lieu of a time machine, I’ve consulted the Magic 8-Ball DTSuses°dONLNd    "ñ.¸* Pto answer developer questions, and it tells me that the CD corresponding to this°dONLNd    R.ñ:π*     issue of °dONLNd    [.π:fi)#develop°dONLNd    b.fi:    )%> — called the “November/December” CD, to ease the transition —°dONLNd    °:ñF(b¥Nwill include a version 1.0 release of DocViewer along with Issues 11 and 12 in°dONLNd    FñR…*     DocViewer xBx/
  2826. (Ö. )2
  2827. (CAROLINE ROSE (AppleLink CROSE) has been*
  2828. 6writing software documentation since before there were*
  2829. 3personal computers or even lava lamps. Her total of*
  2830. 9five years at Apple is (to use the jargon she helped coin*
  2831. -in Inside Macintosh Volume I) a discontinuous*
  2832. 5selection, interrupted by as many years at NeXT. When*
  2833. 5not reading, writing, coining, or otherwise obsessing*
  2834. -over words, Caroline enjoys the outdoors. (As*
  2835. 0songwriter Greg Brown puts it, “People say small(èv5things when they stay too long in little rooms.”) The*
  2836. 2highlight of her summer was “swimming Lava Falls”:*
  2837. 5being thrown from a raft that capsized in the largest*
  2838. 3rapid (a 37-foot drop) on the Colorado River in the*
  2839. *Grand Canyon, and being rescued by a small*
  2840. 5paddleboat that braved the next rapid with 12 worried*
  2841. 4souls aboard. Talk about an adrenaline rush! And she*
  2842. lived to tell the tale.•
  2843. (ÚDd)e)v)e)l)o)p)  
  2844. )
  2845. December 1992ˇ à◊#ˇ ˇˇˇˇ#◊ 
  2846. d, Palatino
  2847. .°dONLNdâïä+6±Oformat. Version 1.0 should work on Macintosh Plus and newer models, with system°dONLNdPï°„* /software version 6.0 and later. Back issues of °dONLNdï„°)Àdevelop°dONLNdÜï°Ç)% will eventually also make°dONLNd°°≠Ö(…6Qtheir way over into this format (the 8-Ball is hazy regarding just when this will°dONLNdÛ≠πâ* Nhappen). We’d really like your feedback on DocViewer and how well it works for°dONLNdBπ≈=* reading °dONLNdJπ=≈b)%develop°dONLNdQπb≈|)%A (or anything else). Please check it out, and send your flames or°dONLNdì≈—∏(Ì6 even praise to AppleLink DEV.CD.°dONLNdµ›Èè*MWhoops — did I say “DTS”? Old habits die hard. Another change we’re gradually°dONLNdÈıG*
  2848. making in °dONLNd
  2849. ÈGıl)/develop°dONLNdÈlık)%8 is to shift from “Developer Technical Support” (DTS) to°dONLNdMıà(6N“Developer Support Center” (DSC). As you may have read in the April 1992 issue°dONLNdú
  2850. #* of °dONLNdü#
  2851. _) Apple Direct°dONLNd´_
  2852. |)<>, the DSC is a gateway to DTS as well as other support-related°dONLNdÍ
  2853. x(56Oresources. It provides a focal point for developer queries — a single AppleLink°dONLNd:%í* Maddress, DEVSUPPORT, and a single phone number, (408)974-4897. Developers who°dONLNdà%1É* Paren’t Apple Associates or Partners can contact the DSC for limited nontechnical°dONLNdŸ1=ã* Ssupport and referrals. We’ll be adjusting to this change along with others that are°dONLNd-=I* 6creeping in: Tech Note references no longer numbered; °dONLNdc=IV)Inside Macintosh°dONLNds=VIÖ)N  references°dONLNdIUR(q6
  2854. that include °dONLNdåIRU∏):New Inside Macintosh°dONLNd†I∏Un)f(; DocViewer as the on-line viewing tool;°dONLNd…UaÑ(}6Spostdating; and other changes that I foresee but don’t dare reveal lest I upset the°dONLNdam´* !delicate balance of the universe.°dONLNd?yÖã*TFinally, I feel compelled to explain my bizarre trivia answer in Issue 11, about the°dONLNdîÖë|* Mupside-down character that wasn’t. I claimed the offending character was “8,”°dONLNd‚ëùv* Kwhich on the contrary looks perfectly OK — not at all topheavy — in printed°dONLNd.ù©=* develop°dONLNd5ù=©)%I. It turns out that this “8” is topheavy only in LaserWriter output. That°dONLNd©µÉ(—6Rwill teach me to use a media-specific question! I think I’ll quit while I’m behind°dONLNd“µ¡{* Pand lay off trivia questions altogether for a while (even though I’ll miss those°dONLNd#¡Õé* friendly letters from you).
  2855. %A∞òÅ&Ä&HH
  2856. i勎ˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  2857. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛ
  2858. ÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚ
  2859.  
  2860.  
  2861.  
  2862.  
  2863.  
  2864. Û Ù ı
  2865.  
  2866.  
  2867.  
  2868.  
  2869.  
  2870. ˆ                        ˜¯˘˙˚¸˝˛ˇÄ&%A∞ÅÅ€ÅÅ€ÅÅ€ÅÅ€ÅÅ€ÅÅ€ÅÅ€ÅÅ€ÅÅ€ÅÅ€ÅÅ€ÅÅ€ÅÅ€ÅÅ€
  2871. ů˙ˇÅÎ
  2872. Å˙˜ˇÅÏ
  2873. Å¸ÙˇÅÌ
  2874. Å˛ÒˇÅÓÅ˘ˇ˝¸ˇÅÓ Å˘ˇ˙¸ˇÅÔ Ç˙ˇ˜˝ˇÅÔ É˚ˇı˝ˇÅÔ Ñ˚ˇÙ˝ˇÅÔ Ö¸ˇÚ˝ˇÅÔ Ü¸ˇÒ˝ˇÅÔ á¸ˇ˝ˇÅÔ à¸ˇÓ˝ˇÅ â¸ˇÌ˝ˇÅ»˛ˇΔ¸ˇÏ˝ˇÅÀ˜ˇÀ¸ˇÏ˝ˇÅÔÕÙˇÕ¸ˇÎ˝ˇÅÔœÚˇÕ˝ˇÍ˝ˇÅÔ—˘ˇ˚˝ˇœ˝ˇÈ˝ˇÅÔ”˙ˇ˜˛ˇ–¸ˇÍ¸ˇÅÔ‘˙ˇˆ˛ˇ—¸ˇÈ˝ˇÅÓ’˚ˇÙ˛ˇ“¸ˇË˝ˇÅÓ◊˚ˇÛ˝ˇ”¸ˇË¸ˇÅÓÿ˚ˇÚ˝ˇ”˝ˇË¸ˇÅÌŸ˚ˇÒ˝ˇ‘˝ˇÁ¸ˇÅÌ⁄¸ˇÔ˝ˇ’¸ˇË¸ˇÅÏ€¸ˇÓ˛ˇ’¸ˇË˚ˇÅÏ‹¸ˇÌ˛ˇ’˝ˇÁ¸ˇÅΛ¸ˇÌ˝ˇ÷˝ˇÁ¸ˇÅÍfi¸ˇÏ˛ˇ÷˝ˇÁ˚ˇÅÍfl¸ˇÎ˛ˇ◊¸ˇË˚ˇÅȇ¸ˇÎ˝ˇ◊˝ˇË˚ˇÅË·¸ˇÍ˛ˇ◊¸ˇÈ˚ˇÅÁ‚˝ˇÈ˝ˇÿ¸ˇÈ˚ˇÅÊ„¸ˇÈ˛ˇÿ˚ˇÍ˚ˇÅ„˝ˇÈ˛ˇ◊˘ˇÌ˙ˇÅ‰¸ˇÈ˛ˇÿ¯ˇÔ˘ˇÅ‰‰˝ˇËˇˇÿ˜ˇ˙ˇÅ‚½ˇË˛ˇŸˆˇÒ˙ˇÅ·ʸˇË˛ˇŸ˜ˇÚ˘ˇÅ‡Á¸ˇË˛ˇŸˆˇÙ¯ˇÅflÁ˝ˇÁ˛ˇ⁄ˆˇÙ˘ˇÅ›˸ˇË˛ˇŸ˜ˇı¯ˇÅ‹ȸˇÁ˛ˇ⁄ˆˇ˜˜ˇÅ€È˝ˇÊˇˇ⁄ˆˇ¯˜ˇÅŸ͸ˇÁ˛ˇ⁄˜ˇ˘˜ˇÅ◊Í˝ˇÊˇˇ⁄˜ˇ˙ˆˇÅ÷νˇÊˇˇ⁄ˆˇ˝ıˇÅ‘νˇÁ˛ˇ⁄˜ˇÙˇ®ˇˇ≠ϸˇæÈˇ©˘ˇ∞Ï˝ˇΩΡ®˜ˇ±̸ˇæÌˇºˇˇÌˆˇ±Ì˝ˇΩÔˇº¸ˇÛˇ≤Ì˝ˇæÒˇª˙ˇ˙ˇ¸ˇ≤Ì˛ˇæÚˇ∫˘ˇÒ˚ˇ¸˝ˇ≤Ó˝ˇæÙˇ∫˜ˇÒ¸ˇ¸¸ˇ≤Ó˝ˇøÙˇºıˇÒ¸ˇ˚˝ˇ±Ó˝ˇ¿Ùˇ”¸ˇÛˇÒ¸ˇ¸¸ˇ±Ó˛ˇ¿Ùˇ”˙ˇÛÒˇÚ¸ˇ¸¸ˇ∞Ô˝ˇ¡Ùˇ”¯ˇ˜ıˇ¸ˇÒ¸ˇ˝˚ˇ∞ Ô˝ˇ√Ûˇ“¯ˇ˚Ûˇ¸ˇ¸ˇ˙ˇØÔ˝ˇƒÚˇ”Êˇ¸¸ˇÙˇÆÔ˛ˇƒÚˇ”Áˇ˚¸ˇÓˆˇ≠˝ˇΔˇ‘Áˇ˚˚ˇÓ¯ˇ´˝ˇ«Ôˇ’Ρ¸ˇ˝˚ˇÓ¯ˇ™˝ˇ…Ìˇ÷Ôˇ˚¸ˇ˝¸ˇıˇ™%˝ˇÀÒˇ˝ˇ◊¯ˇ˝ˇ˜˚ˇ˚ˇÚÒˇ¨(˝ˇÃ˘ˇ˘ˇ˝ˇÿ¯ˇ˝ˇˆÙˇÙΡΔÛˇ¯3˝ˇŒ¯ˇ˙ˇ˛˝ˇŸ¯ˇ˛˝ˇˆıˇ˜ÚˇÊˇˇˇ¸ˇ˘⁄ˇ˘"˝ˇœ˘ˇ˛˘ˇ˝˝ˇ€¯ˇ˛˝ˇÙ‡ˇ˙∞ˇ˘"˝ˇ—˘ˇ¸˙ˇ¸˝ˇ›˜ˇ˝˝ˇÙ‚ˇ˜≤ˇ¯"˝ˇ“˘ˇ¸˙ˇ˚˝ˇfl˜ˇ¸¸ˇÛÊˇÚ¥ˇ¯&˝ˇ‘˘ˇ˚˘ˇ˚¸ˇ„ıˇ¸¸ˇÚˡӫˇ¸˝ˇ˝ˇ÷˘ˇ˘˙ˇ˘¸ˇÊıˇ˙¸ˇÒÓˇï"˝ˇ◊˘ˇ¯˚ˇ¯˚ˇÎÚˇ˙¸ˇÔ˛ˇ¸ˇå˝ˇŸ˘ˇ˜˙ˇ˜˚ˇÔˇ˙˚ˇÅÒ˝ˇ€˘ˇˆ˙ˇı˘ˇ˜Îˇ¸˙ˇÅ˝ˇ‹˙ˇÙ˚ˇÛ·ˇ¸ˇ¸˙ˇÅÔÔ˝ˇfl˘ˇÛ˚ˇÚ¡˝¸ˇ˝˙ˇÅÓÔ˝ˇ·˘ˇÚ˚ˇÔΡ˘˝ˇ˛˘ˇÅÌÔ˝ˇ„¯ˇÒ¸ˇÏÒˇıÛˇÅÏÓ˝ˇÊ¯ˇ˚ˇÈ˙ˇÔÙˇÅÎÓ˝ˇË¯ˇÓ¸ˇœˆˇÅÈÓ¸ˇÏˆˇÓ˚ˇŒ¯ˇÅË̸ˇıˇÏ¸ˇÃ˚ˇÅÊÌ˙ˇıÙˇÎ˚ˇ ˇÅ„ϘˇˇË¸ˇÅ™ Í͡¸ˇÅ™ ËÓˇ‰¸ˇÅ© ÂÙˇ·˝ˇÅ®π¸ˇÅ®π¸ˇÅ®∫¸ˇÅß∫¸ˇÅߪ¸ˇÅ¶ª¸ˇÅ¶º¸ˇÅ•º¸ˇÅ•º˝ˇÅ§º˝ˇÅ§Ω¸ˇÅ§Ω˝ˇÅ£Ω˝ˇÅ£Ω˛ˇÅ¢æ¸ˇÅ£Ω˛ˇÅ¢ªˇÅ¢ÅÅ€ÅÅ€ÅÅ€ÅÅ€ÅÅ€ÅÅ€ÅÅ€
  2875. d,     Helvetica
  2876.     °dONLNd?$/Y+¸b
  2877. Caroline Rose°dONLNdM0;2* Editor v4v&,Times
  2878. +˜" 
  2879. +
  2880. 3
  2881. (è6SUBSCRIPTION INFORMATION*
  2882. To subscribe to )6develop), use the subscription card in(£67the back of this issue. Please address all subscription)≥-(≠6related inquiries to )@    develop, )Apple Computer, Inc., P.O.(∑6,Box 531, Mt. Morris, IL  61054 (or AppleLink*
  2883. DEV.SUBS).•(è˜ BACK ISSUES*
  2884. %For information about back issues of )|develop )and how(£˜5to obtain them, see the last page of this issue. Back*
  2885. issues are also on the )KDeveloper CD Series)I disc.•
  2886. +IE EDITORIAL  
  2887. ))
  2888. December 1992ˇ◊#ˇ ˇˇˇˇ#◊ 
  2889. d,     Helvetica
  2890. .°dONLNdi5{ç+SñLETTERS
  2891. °dONLNdñ$û(@¥P°dONLNd    ù$¶)O°dONLNd
  2892. •$≠)S°dONLNd ¨$≥)T°dONLNd ≤$∫)A°dONLNd
  2893. π$¿)L°dONLNdø$¬) °dONLNd¡$…)D°dONLNd»$–)E°dONLNdœ$◊)V°dONLNd÷$Ÿ)I°dONLNdÿ$fl)L°dONLNdfi$Ê)S°dONLNdÂ$Ë) °dONLNdÁ$Ô)E°dONLNdÓ$ˆ)A°dONLNdı$¸)T°dONLNd˚$˛)I°dONLNd˝$)N°dONLNd$ )G°dONLNd $) °dONLNd
  2894. $)C°dONLNd$)D°dONLNd$#)S°dONLNd "$()?, Palatino°dONLNd"(ñ4Ω(P¥develop °dONLNd*(Ω49)'is the most exciting piece of°dONLNdH4ñ@((\¥!regular mail I get after Japanese°dONLNdj@ñL#*  animation laserdiscs. I joyfully°dONLNdãLñXC* 'received Issue 11 but unfortunately the°dONLNd≥XñdD* &wolverines in the Postal Service dined°dONLNd⁄dñpF* 'on some of the plastic and no CD was to°dONLNdpñ|›* be found! Help!°dONLNdÑñêÃ* — Jim Perry°dONLNdûñ™*Would you consider mailing °dONLNd9û™=)Ädevelop °dONLNdAû=™F)'in°dONLNdD™ñ∂G(“¥%a nonperforated plastic wrapping? The°dONLNdj∂ñ¬G* &perforation was two-thirds torn when I°dONLNdë¬ñŒ * received it.°dONLNdû÷ñ‚Î*— Eva Schlesinger°dONLNd∞ñ¸‘*I really enjoy °dONLNdø‘¸˘)>develop°dONLNdΔ˘¸I)%, but I have to say°dONLNd⁄¸ñ*($¥#that I’ve enjoyed it less recently.°dONLNdˇ ñF*%Some time ago the CDs came in a small°dONLNd%ñ$3* "envelope well protected inside the°dONLNdH$ñ08* "magazine, and everything was fine.°dONLNdk0ñ<±* Now, °dONLNdp0±<÷)develop°dONLNdw0÷<D)% is shipped with the CD°dONLNdè<ñHF(d¥&in its own holder, which would seem to°dONLNd∂HñTG* 'be a fabulous idea except that you were°dONLNdfiTñ`7* $blind-sided by the U.S. Post Office.°dONLNddñp=*$Every month since the CD got its own°dONLNd(pñ|J* &holder, the Post Office has mangled my°dONLNdO|ñàD* %plastic bag, CD holder, and magazine.°dONLNduàñî≈*     Today my °dONLNd~à≈îÍ)/develop°dONLNdÖàÍîH)% issue 11 arrived sans°dONLNdúîñ†>(º¥'CD. I called the subscription office (1°dONLNd√î>†B)®-°dONLNdƒ†ñ¨F(»¥&800-545-9364) and they promise to send°dONLNdΨñ∏1* !me another within four weeks.(!?)°dONLNd
  2895. ∏ñƒµ* Growl.°dONLNdÃñÿ *
  2896. — Bob Cent°dONLNd‡ñÏG*)Most of the mail I get is, unfortunately,°dONLNdIÏñ¯I* (on this subject. Our Production Manager,°dONLNdr¯ñ%* Hartley Lesser, really has been°dONLNdíñ;* %working on it. Even with Issue 11, we°dONLNd∏ñ;* $took a small step toward solving the°dONLNd›ñ(9* "problem: since many people thought°dONLNd(ñ4J* %someone was breaking open the package°dONLNd&4ñ@2* "and stealing the CD, we inserted a°dONLNdK\$¸(@z#thick sheet of paper over the CD so°dONLNdo$\0Ë*  that it wouldn’t be visible. But°dONLNdê0\<
  2897. * 'complaints of torn packaging still came°dONLNd∏<\H
  2898. * (in, so clearly the packaging just wasn’t°dONLNd·H\T* #sturdy enough. The packaging around°dONLNdT\`¯* #Issue 12 and its CD should be about°dONLNd)`\lˇ* $twice as thick as before and have no°dONLNdNl\x    * 'perforation. If that doesn’t work we’ll°dONLNdvx\Ñ≤* try something else.°dONLNdäà\î*(Issue 7 was the last one to list the 800°dONLNd≥î\†„* number you used to contact the°dONLNd“†\¨* )subscription office (though it stubbornly°dONLNd¸¨\∏Ú* !has still shown up on our renewal°dONLNd∏\ƒ * (notice). The correct number is 1-800-877°dONLNdF∏ ƒ)Ø-°dONLNdGƒ\– (Ïz&5548. The person you spoke to normally°dONLNdn–\‹ * &doesn’t handle calls regarding develop°dONLNdï‹\Ë * $and didn’t know that replacement CDs°dONLNd∫Ë\Ù* $should be mailed within a day or two°dONLNdflÙ\* )of notification of the problem. Sorry for°dONLNd    \ * $the mixup. We hope you’ll never need°dONLNd. \≥* that service again!°dONLNdB \,ß*— Caroline Rose°dONLNdR<\Hd*S°dONLNdS<cHk)C°dONLNdT<jHr)R°dONLNdU<qHy)E°dONLNdV<xHÄ)E°dONLNdW<Há)N°dONLNdX<ÜHê)W°dONLNdY<èHó)    R°dONLNdZ<ñHô)I°dONLNd[<òHü)T°dONLNd\<ûH°)I°dONLNd]<†H®)N°dONLNd^<ßHØ)G°dONLNd_<ÆH±) °dONLNd`<∞H∏)C°dONLNda<∑Hø)A°dONLNdb<æHΔ)V°dONLNdc<≈HÕ)E°dONLNdd<ÃH‘)A°dONLNde<”H⁄)T°dONLNdgL\X(tz&Your Issue 11 column on drawing to the°dONLNdéX\d * (screen was really useful to me. I had an°dONLNd∑d\p
  2899. * %animation program that wrote directly°dONLNd›p\|˛* %to the screen and it worked fine. But°dONLNd    |\à* $when I upgraded to a new accelerator°dONLNd    (à\î * &card my program kept crashing. I spent°dONLNd    Oî\†* (months trying to figure out the problem.°dONLNd    x†\¨* (But your article fixed it straight away.°dONLNd    °¨\∏    *  All I needed was the SwapMMUMode°dONLNd    ¬∏\ƒ* $calls. I don’t know why the previous°dONLNd    Áƒ\–Ì*  card didn’t require them, but my°dONLNd
  2900. –\‹ * program works fine now.°dONLNd
  2901.  ‰\†*
  2902. — Tony Cooper°dONLNd
  2903. .¯\    *'Thanks for your interest in the column.°dONLNd
  2904. V\Ú* !We’re glad it was helpful to you.°dONLNd
  2905. x\ 
  2906. *'One thing we want to be sure to mention°dONLNd
  2907. † \,* &is that writing directly to the screen°dONLNd
  2908. «,\8
  2909. * 'will break for sure on future Macintosh°dONLNd
  2910. Ô8\D
  2911. * %systems based on RISC technology. And°dONLNd D\P©* we again want to vBv/(y0 
  2912. +
  2913. 4
  2914. +Ç WHY DON’T YOU WRITE MORE OFTEN?*
  2915. 4We welcome timely letters to the editors, especially*
  2916. 4from readers reacting to articles that we publish in*
  2917. develop).. Letters should be addressed to Caroline Rose(∑¥(or, if technical )4develop)-related questions, to Dave(¡¥/Johnson) at Apple Computer, Inc., 20525 Mariani*
  2918. 1Avenue, M/S 75-2B, Cupertino, CA 95014 (AppleLink*
  2919. 0CROSE or JOHNSON.DK). All letters should include(çv2your name and company name as well as your address*
  2920. 4and phone number. Letters may be excerpted or edited*
  2921. 2for clarity (or to make them say what we wish they*
  2922. did).)•
  2923. (ÚDd)e)v)e)l)o)p)  
  2924. )
  2925. December 1992ˇñ◊#ˇ ˇˇˇˇ#◊ 
  2926. d, Palatino
  2927. .°dONLNd$√+6@&stress that the only applications that°dONLNd'$0À* (should even consider writing directly to°dONLNdP0<¢* the screen are games and other°dONLNdo<Hv* animation programs.°dONLNdÉP\ *#— Brigham Stevens and Bill Guschwan,     Helvetica°dONLNdßlx *U°dONLNd®lx')S°dONLNd©l&x.)E°dONLNd™l-x5)R°dONLNd´l4x8)-°dONLNd¨l7x>)F°dONLNd≠l=xE)R°dONLNdÆlDxG)I°dONLNdØlFxN)E°dONLNd∞lMxU)N°dONLNd±lTx\)D°dONLNd≤l[xb)L°dONLNd≥laxh)Y°dONLNd¥lgxj) °dONLNdµlixq)R°dONLNd∂lpxx)E°dONLNd∑lwx)N°dONLNd∏l~xÜ)E°dONLNdπlÖxè)W°dONLNd∫léxë)    I°dONLNdªlêxò)N°dONLNdºlóxü)G°dONLNdæ|à»(§6'Recently I received a couple of renewal°dONLNdÊàîH* notices for °dONLNdÚàHîo)0develop °dONLNd˙àoîŒ)'in the mail. In trying°dONLNdî†∫(º6%to decipher these notices, I realized°dONLNd7†¨√* &that user friendliness is something we°dONLNd^¨∏¬* (should all be aiming for not just in the°dONLNdá∏ƒÃ* 'software we write, but in everything we°dONLNd؃–¿* %do. It’s interesting how working with°dONLNd’–‹¥*  the Macintosh makes one aware of°dONLNdˆ‹ËÕ* (human interface issues in everyday life.°dONLNdϯ–*'Anyway, I think there are a few ways in°dONLNdG¯J*
  2928. which the °dONLNdQ¯Jq)2develop °dONLNdY¯q∑)'renewal notices°dONLNdiÆ(,6!could be made more user friendly:°dONLNdã ƒ*'1. Leave a bigger space for writing the°dONLNd≥ ,n* credit card number.°dONLNd«0<–*)2. Clearly indicate on the renewal notice°dONLNdÒ<H≠* !the date my subscription expires.°dONLNdLX«*&3. Is there any reason why the renewal°dONLNd:Xdû* notices are printed in red ink?°dONLNdZlxb* —Tim Hammett°dONLNdgÄå¥*"We’re in the process of making the°dONLNdäåòö* changes you suggested to the °dONLNdßåöòø)Çdevelop°dONLNdØò§](¿6renewal notice.°dONLNd¿®¥Õ*)1. We’ll leave a bigger space for writing°dONLNdÍ¥¿Ä* the credit card number.°dONLNdƒ–º*$2. The notice will indicate when the°dONLNd(–‹¬* 'subscription expires. You can also find°dONLNdP‹˃* &this out at any time from your mailing°dONLNdwËÙÕ* (label: the number that appears on a line°dONLNd†Ù–* +by itself at the top of the label indicates°dONLNdà √* (the last issue you’ll receive unless you°dONLNdı 6* renew.°dONLNd¸(¬*(3. The reason for the red ink is so that°dONLNd%(4Õ* +this little piece of paper doesn’t get lost°dONLNdQ4@¬* 'on your desk. But you’ve inspired us to°dONLNdy@L–* )change it to a more readable, deeper red.°dONLNd£‚$Ç(@#We’re also correcting the 800 phone°dONLNd«$‚0ì* (number on the notice, to 1-800-877-5548.°dONLNd4‚@Ö*%Thanks for your letter. Without it, I°dONLNd@‚Lê* #would have assumed that the renewal°dONLNd:L‚Xq*  notice (which isn’t really in my°dONLNd[X‚dh* domain) was in great shape. I°dONLNdyd‚pm* appreciate the enlightenment.°dONLNdóx‚Ñ+*—Caroline Rose°dONLNd¶î‚†Í*R°dONLNdßîȆÒ)E°dONLNd®î†¯)U°dONLNd©î˜†ˇ)S°dONLNd™î˛†)E°dONLNd´î†
  2929. )D°dONLNd¨î †) °dONLNd≠î†)C°dONLNdÆî†)D°dONLNdØî†$)S°dONLNd∞î#†'):°dONLNd±î&†)) °dONLNd≤î(†+)I°dONLNd≥î*†2)S°dONLNd¥î1†4) °dONLNdµî3†6)I°dONLNd∂î5†<)T°dONLNd∑î;†>) °dONLNd∏î=†E)A°dONLNdπîD†L)R°dONLNd∫îK†R)T°dONLNdªîQ†W)?°dONLNdΩ§‚∞(ÃIn Issue 10 of °dONLNdç∞A):develop°dONLNd”§A∞á)%, Bruce Radford°dONLNd„∞‚ºã(ÿ%stated that he wasn’t sure what to do°dONLNd    º‚»{* !with his old CDs. He felt that he°dONLNd+»‚‘í* 'should recycle them, but he wasn’t sure°dONLNdS‘‚‡q* how. Well, I have a suggestion.°dONLNdt‰‚s*Many people forget that reusing°dONLNdî‚¸Ä* #something is often even better than°dONLNd∏¸‚Ñ* #straight recycling. My school would°dONLNd‹‚Ç* $have many uses for old issues of the°dONLNd‚ * develop°dONLNd é)% CD. I know a few friends who°dONLNd& ‚,í(H'would love copies, no matter how old; I°dONLNdN,‚8ê* &could use them in a programming class;°dONLNdu8‚Dê* 'and other students could cut them up to°dONLNdùD‚Pã* &make jewelry for school fundraisers. I°dONLNdƒP‚\w*  also have many uses for old 256K°dONLNdÂ\‚h*  SIMMs, which seem to be becoming°dONLNd    h‚tk* about as useful as pennies now.°dONLNd    'x‚Ñî*'So go ahead and send the stuff that you°dONLNd    OÑ‚êé* (think no one needs to me, or to a school°dONLNd    xê‚ú *     near you.°dONLNd    Ç§‚∞U*— Peter Bierman (age 16)°dONLNd    õ∞‚º* BS Software°dONLNd    ßº‚»D* 5757 Olentangy Blvd.°dONLNd    º»‚‘N* Worthington, OH 43085°dONLNd    “‹‚Ëã*%Thanks for the idea. Day care centers°dONLNd    ¯Ë‚Ùë* %and children’s museums have also been°dONLNd
  2930. Ù‚ç* &mentioned as possible destinations for°dONLNd
  2931. E‚ ë* &old CDs. We suggest that before giving°dONLNd
  2932. l ‚f* away CDs for for art projects,°dONLNd
  2933. ã‚$è* %developers put a deep scratch through°dONLNd
  2934. ±$‚0à* &the data side of the CD if it contains°dONLNd
  2935. ÿ0‚<z* "any confidential or licensed data. x4x&({) 
  2936. +
  2937. 5
  2938. (ÚŸ    LETTERS  
  2939. )$
  2940. December 1992ˇ™◊#ˇ ˇˇˇˇ#◊ 
  2941. d, Palatino
  2942. .°dONLNdñ$?+¥@%For some wild and crazy ideas on this°dONLNd&$ñ0)* from Apple’s Developer Support°dONLNdE0ñ<0* "Center, see the Q & A on page 126.°dONLNdhDñP·*— Caroline Rose,     Helvetica°dONLNdx`ñlû*D°dONLNdy`ùl•)E°dONLNdz`§l¨)V°dONLNd{`´l≥)E°dONLNd|`≤lπ)L°dONLNd}`∏l¡)O°dONLNd~`¿l»)P°dONLNd`«l ) °dONLNdÄ`…lÃ)I°dONLNdÅ`Àl”)N°dONLNdÇ`“lŸ)T°dONLNdÉ`ÿl‡)E°dONLNdÑ`fllÁ)R°dONLNdÖ`ÊlÓ)N°dONLNdÜ`Ìlı)E°dONLNdá`Ùl˚)T°dONLNdà`˙l˝) °dONLNdâ`¸l)A°dONLNdä`l )D°dONLNdã`
  2943. l)D°dONLNdå`l)R°dONLNdç`l )E°dONLNdé`l')S°dONLNdè`&l.)S°dONLNdëpñ|˛(ò¥I’m on the Internet and °dONLNd©p˛|%)hdevelop °dONLNd±p%|J)'contains°dONLNd∫|ñàG(§¥&only AppleLink addresses. I’m guessing°dONLNd·àñî6* !that crose@applelink.apple.com is°dONLNdîñ†˙* your Internet address. °dONLNdî˙†!)ddevelop °dONLNd"î!†>)'really°dONLNd)†ñ¨6(»¥#should have an Internet address for°dONLNdM¨ñ∏E* &academic developers to send e-mail to.°dONLNdt¿ñÃ÷*
  2944. — Eric Kofoid°dONLNdÇ‘ñ‡B*#Adding “applelink.apple.com” to any°dONLNd¶‡ñÏ6* #AppleLink address converts it to an°dONLNd Ïñ¯J* (Internet address. The Internet addresses°dONLNdÛ¯ñA* %for me and develop’s Technical Editor°dONLNdñ3* #Dave Johnson are listed on the last°dONLNd=ñÓ* page of every issue.°dONLNdR$ñ0·*— Caroline Rose°dONLNdb\$d(@zB°dONLNdcc$k)A°dONLNddj$r)C°dONLNdeq$y)K°dONLNdfx${) °dONLNdgz$})I°dONLNdh|$Ñ)S°dONLNdiÉ$ã)S°dONLNdjä$í)U°dONLNdkë$ô)E°dONLNdlò$†)S°dONLNdmü$¢) °dONLNdn°$©)C°dONLNdo®$±)O°dONLNdp∞$∏)N°dONLNdq∑$ø)U°dONLNdræ$Δ)N°dONLNds≈$Õ)D°dONLNdtÃ$‘)R°dONLNdu”$€)U°dONLNdv⁄$„)M°dONLNdx(\4Ù(Pz#I noticed that your back issues are°dONLNdú4\@¢* listed at $13 in °dONLNd≠4¢@…)Fdevelop °dONLNdµ4…@)'
  2945. and at $10 in°dONLNd√@\L≥(hzthe APDA catalog.°dONLNd’P\\*!Why the discrepancy? Who should I°dONLNd˜\\h’* order the back issues from?°dONLNdp\|∞*— Michael Tackie°dONLNd$Ñ\ê
  2946. *&P.S. Great magazine. Very technical. I°dONLNdKê\ú
  2947. * 'don’t understand everything, but that’s°dONLNdsú\®˚* %good; it forces me to become a better°dONLNdô®\¥ñ* programmer.°dONLNd•Ω\…*%You pay a $3 shipping charge when you°dONLNdÀ…\’* (order from APDA, so it adds up to $13 in°dONLNdÙ’\·Å* the end., New York°dONLNd˝Í\ˆ∞*— Caroline Rose°dONLNd
  2948. \
  2949. ñ* P.S. Thanks!
  2950. °dONLNd@+Nó(iI.CORRECTION TO APPLE EVENTS ARTICLE IN ISSUE 10"V?# V@V5"V6#"W?"W6
  2951.     °dONLNdMW+bfi*-The “Apple Event Objects and You” article in °dONLNdzWfib˛)≥develop°dONLNdÇc+n (äI8Issue 10 contains two errors in the printed sample code.°dONLNdªo+z* :The first problem is that five lines were omitted from the°dONLNdˆ{+Ü    * 5end of GetWindowIndex. The code at the top of page 25°dONLNd,á+íã* should be changed from,
  2952. Courier°dONLNdFùH®â+
  2953. return noErr;°dONLNdT©+¥0(–I}°dONLNdV¡+Ã3*to°dONLNdYŸ+‰l*
  2954. if ((rawIndex
  2955. °dONLNdf€l„q)A 
  2956.     °dONLNdgŸq‰v)>
  2957. °dONLNdh€v„{) 
  2958.     °dONLNdiŸ{‰È)numWindows)||(rawIndex
  2959. °dONLNd€È„Ó)n 
  2960.     °dONLNdÄŸÓ‰¯)<=
  2961. °dONLNdÇ€¯„˝)
  2962.     °dONLNdÉŸ˝‰)0)){°dONLNdâÂ9p( W *index = 0;°dONLNdñÒ9¸∂* return errAENoSuchObject;°dONLNd∞˝+I($I} else°dONLNd∏    9ì+ *index = rawIndex;°dONLNdÃ9 u* return noErr°dONLNdŸ!+,0(HI}°dONLNd‹W&b(~D5The second bug is in the routine WriteRectToken (page°dONLNdc&n|* 30). The following call°dONLNd+y&Ñ’*#BlockMove(*thisRectDesc.dataHandle,°dONLNdPÖ4êŸ+ !&tokenPtr->theRect,sizeof(Rect));°dONLNdrù&®|(ƒDshould be changed to°dONLNdáµ&¿’*#BlockMove(*thisRectDesc.dataHandle,°dONLNd¨¡4ÃÌ+ %(Ptr)tokenPtr->theRect,sizeof(Rect));°dONLNd“’&‡ (¸D;Since theRect is actually a pointer to a rectangle (see the°dONLNd·&Ï* ;declaration at the top of page 29), the first version would°dONLNdJÌ&¯ * :have destroyed the pointer and four bytes of the following°dONLNdÖ˘&X*
  2963. long integer.°dONLNdì&*Thanks to Doug McKenna, the author of Resorcerer, for°dONLNd… &+ò* pointing out these problems. l?U?"V?# V@V9"V: V;V5 l6U6"V6# vBv/
  2964. (y0 
  2965. +
  2966. 6
  2967. +od)e)v)e)l)o)p)  
  2968. )
  2969. December 1992ˇ.†◊#ˇ ˇˇˇˇ#◊ 
  2970. d,     Helvetica
  2971. .°dONLNd58E†+V`
  2972. TECHNIQUES°dONLNd S7c†(~U FOR WRITING°dONLNdq~ņ+GAND°dONLNdè<ü†(∫Z    DEBUGGING°dONLNd%≠-Ω†(ÿK
  2973. COMPONENTS0:?Ãπ
  2974. ;@À∏òÄ<êxHHQox §ˇˇˇˇˇˇÓÓÓÓÓÓ››››››ÃÃÃÃÃꪪªªª™™™™™™ôôôôôôààààààwwwwww    ffffff
  2975. UUUUUU DDDDDD 333333
  2976. """"""êx;@À∏#˝ò
  2977. ôàòòxáveTC3˜2"2"Ò2˚3CC˛DTUefw3ôôöôöôö˝ôâôôââ˛ôààwfUD33##"#"#"#"#"#"˘#˝3˝4EEVV,¸ôò˝ô©ôô©ô˛©ôô˛©˝ô¸òàááwveUTD˛C¸3˚CDD˛U8 UDC3##"#5Vgàx˛âôâ˝ôâ˚ôö˝ô    öôö™ôôöö©™˛ö ôö™ö™ö™äöôôâà8˛effv˛wòòôòòÜeTDUeÜfwxfxàò˛ô˝©ô˛©™™©™™˝∫ª´ºÀºª˝Ã‹‹5wffUUEUEE˝U˛V¸fgwxâ´˛ö˛™ö™ôòww˝g
  2978. wxz´™ªºªºªª˛ºª˛º8&DUUföËÃ∫ô™ÀËÃÀπ©áwvfeefáÜffvfeefeffve˝fvffef˛e˛fe¸f7˛UEEgàâvDEEUUVVffggxàââÕ€∫´ªºÃ˝Õ›¸Õ›‹›¨Õ››Œfi˝›Õ››˛Õ6˛wááw˛áwáá˛v feeUTTDTTzfÖ˛U˝efefef˝e˛fe˝fe˛fef˛e7˛xwxwxwxwx¸wxwxwà˛xââàww˚gfww˛gwgwgwwgwwàwxgwxâôöö/ò˚àòàòààá¯àá˛àáààò˙àòàòòôò˝ô©©ôô©©™©∫˛™∫2    ôôâôòôââôâ¸àâà˛âàâàââàà¯âôââ˚ôöôöôöö˛™ö˛™´´;˛∫™©©˛™©©ô©˛ô©ô©˛ô©ô™ôô©ôô©˛ô©˛ô©©™©™©™©˛™˛∫ª∫ªªÀÀªÀ)›Ã˛ÕÃÕÕÃúªª˝™öö™Óö˝™ö™ö™™˝´ªªººªªºº7›‹‹›˛‹›‹Ã⁄ª››ÃÕ˝Ã‹˛ÃÀÀªª∫∫™˛∫    ™™∫™D∫∫ªª∫˛ªÀªÀÀ˘Ã‹4›Õ››Õ˝›ÃxögºÃÃÕկà ÕÃÕÃúÃÃÕÃ√,˝›ÕÛ˝Õ    ÃÕÃÕÕÃÃÕÃÕ;››Ì›ÌÌÓÌÓÁåÃòú›ÌÓ‹›‹Ì›‹Ã‹›‹››˛‹››‹‹€3}›Ì¸›Ì›ÓÌÌ›ÌÌ˛˛ÔˇÔ=Ô˛ÔÔ˛ÓfiÓ{ª¨…äÕ˛›fi›Ófi›fifi››ŒÕÕÃÃÕÕúì#¨ÃºfiÕ˛›Ω›˛ÓfiÓfiˇÓÓˇ˛Ó<˛ÓÓˇ˛˛ˇ˛ÈËõÀôÀÀª∫∫˛™ªªºÃ‹‹›‹›‹fi‹ÿ2<fiÓÌ˛Ó    ËUEæ˛˛Ô˛Ô˛˝ˇ˛˛=;ÔÓˇÓÓÔÔÓÏÕõ¨fiÕπÓˇÔÔˇÓÔ›fi›ÕÀúÃÃÕúªR#{ΩˇˇÔÔÓEgf[ÔÓÓÔÓÔÔÓÔˇ˛Ô4Ó˛ˇ˛ˇ˛˛    ¸⁄CππŒ⁄˛ˇ˛˛ˇ˛ˇ˛˛ˇˇ˛˛Ô˛ˇˇ˛ı24Ô¸ˇıfäyܘˇ˛ˇ3ÓÓÔÓ˝Ôfi÷45UX€ÔˇÓÔÔˇÔˇÔˇÓÔˇˇ˝ÔÓ2#>Ô¸ˇwôõ™ôدˇ˛˛-˝Ì›Ó›Ì‹÷˛C E‹˛ˇ˛ˇ˛ˇ˛ˇˇÔˇ¸˛ˇ˛Û"3Æ˚ˇôx´™…üˆˇ-fiÓÌÓfifi˛›÷443EŒ˙ˇÔ˘ˇÔÓ"#$ÔÓ˝ˇ˚∑gõjΩØ¯ˇÔ˛,ÌÌÓˇÓÓÌÌÏ’y•fÖœıˇœ˝ˇ‚23^ˇ˛˝ˇ˙§TVeùœ¯ˇ˛˛6fifiÓˇÓÓˇÓÏdgá|ïø¸ˇÔˇˇÔÔ˚ˇ›"#5ÔÔˇÔÔˇˇÎugWf^ø˝ˇÔÔ˝ˇÓ&ÓÓÌ˛ˇ˛ˇ˚dDTVdøÒˇ‚"3n˙ˇ˘VwgeZè¯ˇ˛Ó*ÓfiÓÔÔˇÔÔÓD3S44flıˇÔˇˇ˛"&Ô˙ˇ˚D4EEW¯ˇ˛ˇ$˛ˇ˛˚ˇ‘UfvU˛˙ˇ˛˚ˇÓ‚"2o¯ˇUevUfÔˆˇ1Óˇ˛flÓÔˇÓÓ’FUVHÔ˝ˇÔ˛ˇ˛˛ÔˇfiÓ%Ô¯ˇEVUVVÔ˘ˇ˛Ôˇ3Ô˛ˇˇ˛ˇˇ˛ˇÙefel˛ˇ˛˛ˇ˛˛
  2979. ÓÔÓ˛R!!""Æ˝¯ˇueef~˚ˇ˛ˇ˛ˇÓ˛7˛fi¸ˇÓ²VXüÔÓ˝ˇÔÓfiÔÓ÷,fifi›fi˛Ó    ÔÓÔˇΔUVVjÔ˝ˇ˛fi˛ÓˇˇÓ;Ó˛Ó˛ÔÓˇ˛ÌUVefZvÓ˛ˇˇ˛˛    Ì‹À©A!"!!ã˛›ÓÓ˝Ì››’efvmÓ˝ˇ˝fl˛ˇÌÓ<ÓˇÔˇÔÔÓÓdeEfeWóSéÔÔ˛Ô›2˛%Ø››Ófifi›Õ≈ggf_Ô˝ˇ˝œˇÔ˛›fi:ÓÓÌ˛Ó˛ÌvTóTUfôfÉCmÔ˛Ó“!˝""2!!*ÌÓÌÔ‹ÌfiÑffee¸ˇ¸Œ˛ˇÓÓ<fi˛ÔÓ›DV4©DEWgVX6#(ÓfiA#""˝ÔÓflfiÓfi’TVVUXfÔˇˇÔÏæˇfi˛Õfi=ÌÓÔˇ˛4TdT∏ÑDffeftdTmÓ!!˛!31!!"1!!!_ˇ®áòÖefeUfßáuäˇˇÏ›Ó˛¸››<≠˛fiÂEETDfÑ3VfUVgFUG›˝#˛".ÓôãuVvWvEXáwvfo˛‹ÕÓÔ‹Õ›=!!3TeEeTmâ3feeVfTeTk!˛"1!!!C!!,ÌŸµwvvΔwUhΩwàvfÆ‹€ÓÌ∑dB9˛5UFEE^…3f˝VeVVC˝"!˝#˛úŸFggfzªex⁄whxwv3"˛ˇ7˝UUer3[∫CfdBDffved1!!21˝!31˛!"&ËgáveÜx©ãòwáà»ÜB"¸!7VUEF3F´5UT44VWWffD3¸2˝gwffgxà©¶vWyºwe¸9 UvT2"V YeUgUegwevfR3!!!!#A¸áwufáwyáßÜvh›òvQ!˝6˛VfSC2FÀlgUEEggififU!"˚"âf5ixfóáñávxŒôáe¸9fvcB3UölñeUfxvzveffb#1!˝!3¸&´ïhYGv¶xßàwôÓ©ávQ!˛8˛%VfVBDVkã¶VVfiwzáVEVf3¸#6´àòYvgáxóõ™åÓ©òge˝;VfwvUUe{öµeUfjÜä©veUÜ2˛!˛!"!˝VÀàñáܲw    ß¨ŸôÓ€πÜvQ˛8˛EgwvEUUlö®UVVzò3$TEfB˚!˛G´Vgxáxxòóáw|fi‹©àgb˛8˛VgàÜeegW∫®eev´1!!2%eUC˙!"1˛g‹xßv∏àòó«à©º∂S2XÜr!!;˛FgzÜefjW™®eVhíUCz»f"˛!gVgxfôòáx∏xá∑C##"iT˛<˛Ugãñefve∫™vew&eUffA'gòr˛!"˛!1˛wvÜvgxàóx«|›weUS36S1!!;VgåffgwXÀ´ffh<VfgghVe2¸"%iòàfgHàáy®õΩ˛ÕfifiÉ33#9!fwãvwvxz ºfvÑáfá∫x|íf3A˝!˝"˛Ex⁄àñiXàáâ©Ωœ˛ˇ˛ÏÈCS33F<12wwåwxvzhÀ¨fgÉGxùflàx¥R5B""#WyÀyiXiäxòºúÆ˝ˇ»4ì3~ù<!TA%Vwúfwfòv ºgw£9˛ˇ˛Èæ“cUQ!!"22"B˛ fŸ∫®òπóâò¨úl˝ˇ§BïD®j=144$fWùfwfâgÀ¨Vg≤ÔÓÔÓfiísFR#3#"cVxôôx yßx}¨l˛ˇ˛•Rg4{¨=1DDffwÕwvvñáÀºwwb9Ô˝Óˇ›2tDD1""3D32r!#Vâôòá®àòóåÓÏ˛ˇ˛«af4ff=!##VUX≠xfWwgªºwwR;ÔEçÓ™*eEUF#$E2"R˛WhóòwÀ®xàâÀ¨ˇˇÃ›ì##VV=;235vg©óvfwÜ ªßw¢å˛B3K®%ueâá224TEcc!3ViôáóŸô®à™∫ÃˇˇÀÕíb3Tee=;TFh©vfwgfÀ´«x≥ÃˇÌcD3'∫àfâ##45G6E4Fàö©ó∏xôäº◊Õˇˇ˘úb$DVEE=;EUyßáávfàÀ∫«ã’[fiÓÂrC3{…F©33CFòïU!4f∫€ä®óàö∫™ˇÕˇˇ˙Ç34DR33<!4Vi®xâWjÀ´º{≠◊v≠µ233#©™∫334Gââg˛4FΩòz…πâö©õÕMˇÔ›sCCE˛"<Evâ•!â∏á|À´ºôº÷îVuCC3D∂vá˛CFò™f!DV<∏ó®⁄ ΩÃºΩæˇˇ˙t’TC˛2<8Egzìwwv|À™ºÕ›∫Å#44G¶wf3344HyT4W´ ® ™¨¨ººfiÃxÉTEU2˛"=;fyõ°!vvó|ÀªªÃÀQCCÜß∏áCCDCGäá!Dg#ò™∑ ™∫Àª›‹C323eS22"!<gwâ≤fwVåÀ´´ººÃ!áò™ò˛4D8âx!5Vââä ™∫™¨Õ›3##%#˝";{ò©Å2¶vv‹À∫∫ªÃ a¸$k™ößCCDTHòá!Db&à®õÀª…´ÃÀÃs22422"2"2: YâC©yx‹À˛´ º∫ë*ö™á˛4D8âv˛4Q7xö©™ôº´ª´ª¢""#¸"7$F!!$ππó‹À∫´ª∫∫Ÿ6™©ñ˛CTHôs!4ahàô¶∫™π´∫Àª¢""2˚"< Dâ™∏ê∫˝™q˛ööÖ˛4THâA˛4BYäô󲙴´™™ì""2˛"";#C!"'ô¨ª ªª∫∫™©q¸"z™Ñ˛CTàï!˛DBißöß©™ª∫∫¨∫í22R2"!""292öô´ªº´™´´öq˚ôT˛4 Dà14Ciyy˝™´º™™r""R˛""9"2!"x®âªªÃÀ∫∫™™ë!˛!(d˛DTQ¸
  2980. CC;òôâ™™∫∫©™πǸ"2""!93""yàõöªºª™´∫©í4D4!%36òâôôö´™õ∫ôb¸"˛/!"3A"wö©ªª‹Àªª∫©¢˝!Ú
  2981. 5Ctòò™ªªÀªπ©©b˛"!˛"!"4T2xôä™´‹ºª™™öÇ˝˛¯$T89âyöºÀ´™™ôB"˛˛"/!!3CB"òà™´ªÌÀ∫™∫™b˛!Ò#G\©ôªÀÃÃ∫©™®R"2˛"2"2!.43Bâô´õ¨›Ã∫´™™2˛ÙFª™ôöõΩ∫ºööô2˙"1!!#E1"ôô∫™ÃÓÃ∫ª∫∫b"!˚˝ "Gª©©´ÀΩ º ™®˜"-"ôö™õÕfiô∫´ªr"Ú 8´ö™™´æ™´´™ò˚"#˛"2!!˛"$ôöπ´›’‹∫ªÀª¢"!˙¯"F´™π™ª≈À™ ∫©232"2""˛2/"""ôöö≠Ցô™´ºí#¯˛2ª˝™§Àöª™™#¯"8""˛!'ô™™ºÕ“ÃÀ∫ÀÀ¢!!˚
  2982. #iª«àµ"3Ã˝∫
  2983. ¥€∫º™®32#"2˝"28¸
  2984. âô™Ãլô™ªº¢˛$C'ÜS!%Ù™´´ì‹™ºªñ˛"2""˝/¸!'ô™´ÃÕR‹∫ªÃâ2!¸ˆ8⁄ª∫ºÀc‹ ºÀ§2"2"#"2˛".¸♨ÃÕ"º´´ÃÀì"!Ú9À´™¨ª3‹ª¨Ã§33#""#˛"=""!""&â™À‹◊"¨ªªÃ€Ç"!˛ J‹ª∫ªÃ2ÏÀºÀ¥C33B22""2"/˛"âõªº√å´ªÕÃr"Jô´¨À"›À¨ª§4434"$""#;˛!˛"
  2985. ô´Ã‹“!{Àª‹‹B2!˛˛˛[‹ª∫º…3‹‹ªÀ≥3C332"B22"."˝#ö¨ÃÃ√"lªº‹ÃC#!Ò[ú´ºµ#›Õ…™§33##3"$˛"3"23233öÀË≥B\ÃÛ‹dB!ˆ˛ k€Ã∫ª¬"›‹Ã∫§3¸2#R"2/3#33#$öºÃÃÑ3LúÃÃVU!jÃê´ΔUfiÃÙs#3#3343D""9˝3B4´ÃËtTLÃË›fe1˛˛˝z⁄¨Ã‹’D›Ì‹™tUUTDUUTCS3. #4S"#7´¨ÃÃTEl˛ÃÕfU!ÔiúÃÕπá››ÃäeUED4DDE3EC723DEUX´ºÃÃuvåÀËáv!˙˛˛˛
  2986. h‹º›‹fiŸfiÌ‹®˛vf˝efvt+"##")õ¨ºÕT4LªªÃÃE4Ú
  2987. IÕ¨ÃÃwe››ÃôD34˘32¸"7´´Ã‹dCKÀªÃ‹Ue!ˆ˛[‹ÀÃÃff›ÌÏ∑CC3˛C33CC2-"˛"&öö´ÃC#:™´ÃÃUDÔLÃ˛ª
  2988. UUÕfiî433#3˝#43%˜˛!Ô KÀ™ª∑UTË€òC˝32323CBÓ˛˛˜ı¸""˚˛˛ˆÈ«ˆÍ    ˙˛Ú˛fi)˝˛˛˛ˆ˛˛ˆ˝—˛˛˛¸˛¸⁄˚)˚!˙!˚˛˝˛!˙!˛!!¸* xâöì"'˛ôí##"ÚFffU3¸#"˘/˚!â´À√!"*ÀÛ¬221¯"}›‹»TTD\À››c33˝2˝".˛â™Ã¬ªº›r""!]›‹ΔUUEGºªöÉ3#"#"""6¸!"i™›“˛"kº”223!˛˛¸
  2989. "}›Ï÷ueUUÌ‹∑c3˛2˝"2"-˝I¶""""#C#""ÚlÕ›ΔUEEV›‹®C3##˚"0˝!!"©˝"!"S322!˙˛˝"UXŸeUeefyc!$C3˝2˝",˚∂""BT#""Ú32#UUVVgó3""3˝"":!˛!5dB2""a!(D22!˛˛!"2"6eeVefôc!!3˚2"2".GS#"#T3#!Ú"U˛EUVh§"##˚"#5!!! 5ÜdB22!"feC1¯˝#B"eUTTDTfv2!#C2""22""21˛(UD43#WVD2ÛT$DEDEDUUWC#343"#˛"#";!!"!4#FT3CC2!"4vfdQ!˝!&vufeUTUDTTdeCCD22"3˛22˛"%xHc4˛#3"yWvUUBÙ&gfVVEDVDD4D˛4D#3#3#"";!!""#wd2"2233Gº∂UeDB!˛˛!6efeUTd˛TDDTDS¸CB230˝##3"##3$343$DDBÙ&UEEUDEUE345E˝4DD43##5¸"32˛"3CD4˛CDUS!˝¸!"5ee˛UT¸D
  2990. TDTUCTCDCC21"""""#4D4CD4DED˛ˆ EVUUETEEDD˚43D45E44<!"!2""!˛"
  2991. 3CC"TDDETT!˛˝!"UfUeUTeDTDTDCDCC˛DTTST/˘##44DD˝4T1ˆ˛UE˛UDUDDEDD4˛3D˛4D8"2"!"!˛"3CSD4DT˛DTA˚¸!$feef˛eUedDUTCSCCTUUTDC4#""˛344DD4DEE˛D2¯˛ff¸VUUD˛4    EE34D4EDD3<32"2˛"23C3eDSDTTDCDC!˛˝!%vveUfeeUUcC3T3dCCDCEUTD4"˝$32#C#CDDEEDEDF4ˆEf˛V
  2992. fUefUT334DE˛D4EUDD5"!˛"#3D33DD˝UTDDTS!˛˘!"Ufv¸eUdTC3˛DTETTSDTT4˝"$D53C34DD5EU4D4T!¯FffUVUVTEUD˛3433545E˛4= !!""232CC23DD˛CDDTTSA˛!%fvfufeeUTUT3CC3CDC3TTDCC5˛"#˝3    #"43343434˛D"¯FgffUeUUDED433434#3$˛D452""3CC˛2
  2993. 3CB233C3CEee4!ˆ!efvuffeeUdedCC3CCDCC4DUUC7 ""##"#33433˝#334U3˛¸E˝f    VUVeUUD33D˛434#3˛49˛" 232332232"32˝3˛CA˛˛!%Uve˛fvdTUUSCD˛C3C3C2˛32"˚#433##"#"#323533#˙4VVeVVffUFDUCDD4˚3#˛36 2C32233233C3˝23234CC3!¯!TWfeevffeedTSEC4D˛CDC22C34
  2994. 33433443$3443#˛34D4Ed3Q˙ EGfVUUVfVVU˝D4¸3#˝37DTSCC3CDCTCC3DS3¸DTC1˚#UveedUeVeeTTDD˛T˛DTDCCDC8$344C3#˛4D434344D44DE3&˚    dEvUUEEU˛E    TEDUE44DDE˛D˛4
  2995. d
  2996. °dONLNd0∂¬ö(fi6GARY WOODCOCK AND°dONLNdB¬Œ]*
  2997. CASEY KING, Palatino
  2998. °dONLNdMê¶û¸(πƒ:Programmers first saw the Component Manager as part of the°dONLNdࢶ∞Ô*6QuickTime 1.0 system extension. Now that the Component°dONLNdø¥¶¬‡*9Manager is part of System 7.1, components aren’t just for°dONLNd˘Δ¶‘*=QuickTime programmers any more. This article shows you how to°dONLNd7ÿ¶Ê*Btake advantage of the power and flexibility of components as a way°dONLNdzͶ¯Û*<to give extended functionality to any Macintosh application.
  2999. °dONLNd∑¶"*+OSoftware developers are continually searching for ways to avoid reinventing the°dONLNd"¶.* Pproverbial wheel every time they need new capabilities for their programs. A new°dONLNdX.¶:* Napproach is available with components. Components are modules of functionality°dONLNdß:¶F
  3000. * Othat applications can share at run time. They enable applications to extend the°dONLNd˜F¶R* Oservices of the core Macintosh system software with minimal risk of introducing°dONLNdGR¶^ü* 7incompatibilities (unlike, for example, trap patching).°dONLNdÄj¶v˛*LAs Figure 1 suggests, components also encourage a building-block approach to°dONLNdÕv¶ÇÓ* Fsolving complex problems. Higher-level components can call lower-level°dONLNdǶé* Ncomponents to build sophisticated functionality, while at the same time making°dONLNdcé¶ö* Jthe application program interface (API) much simpler. What’s more, because°dONLNdÆö¶¶* Ncomponents are separate from an application that uses them, you can modify and°dONLNd˝¶¶≤ò* 4extend components without affecting the application.°dONLNd2æ¶ *LComponents are maintained by the Component Manager, which is responsible for°dONLNd ¶÷* Qkeeping track of the components available at any given time and of the particular°dONLNd—÷¶‚* Jservices they provide. The Component Manager provides a standard interface°dONLNd‚¶Ó * Mthrough which applications establish connections to the components they need.°dONLNdj˙¶*NAlmost anything you can dream up can be a component — video digitizer drivers,°dONLNdπ¶* Sdialogs, graphics primitives, statistical functions, and more. QuickTime 1.0 itself°dONLNd
  3001. ¶* Tcontains a number of useful components, including the movie controller, the sequence°dONLNdb¶*Δ* ?grabber, and a variety of image compressors and decompressors (°dONLNd°Δ*‚(F‰codecs°dONLNdß‚*)    ), all of°dONLNd±*¶6z(Rƒ.which are available to any client application. |4|&,Times
  3002. () 
  3003. +
  3004. 7
  3005. (ìΔGARY WOODCOCK AND CASEY KING)í have a(ùΔ9long history of collaboration. They first met at a flight*
  3006. /simulation company in the early 80’s where they*
  3007. 4worked together on designing a multimillion-dollar F)Ø-(ªΔ416 jet fighter simulator (and you thought Falcon was*
  3008. 6cool!). They parted ways temporarily, but regrouped at*
  3009. 5Apple to join forces in what colleague Jim Batson has*
  3010. 4termed the “QuickTime sleep deprivation experiment.”(ìá1They’re both currently working on RISCy products,*
  3011. 0but from different parts of the country (Gary in*
  3012. 0Cupertino, and Casey in the new PowerPC mecca of*
  3013. 1Austin, Texas). With his wife Lonna, Casey is the*
  3014. 3proud co-owner of his latest obsession — a year-old*
  3015. 2baby boy named Brian — but he still makes time for*
  3016. 6mountain biking, hiking, and flying. Gary still spends*
  3017. 7much of his time diligently testing video capture cards*
  3018. for
  3019. (ˆ%1TECHNIQUES FOR WRITING AND DEBUGGING COMPONENTS  
  3020. )”
  3021. December 1992ˇ(v◊#ˇ ˇˇˇˇ#◊ 
  3022. 6¥ì"6¥°d
  3023. ONLNfH"ì°d
  3024. ONLNfàñ†Ç†é
  3025. 45≥6¥ò.@l@l6¥v”””
  3026. ÓÙˇÄı
  3027. ÓÙˇÄı
  3028. ÓÙˇı
  3029. ÓÙˇı
  3030. ÓÙˇı
  3031. ÓÙˇı
  3032. ÓÙˇı
  3033. ÓÙˇı
  3034. ÓÙˇı
  3035. ÓÙˇı
  3036. ÓÙˇı
  3037. ÓÙˇı
  3038. ÓÙˇı
  3039. ÓÙˇı
  3040. ÓÙˇı
  3041. ÓÙˇı
  3042. ÓÙˇı
  3043. ÓÙˇı
  3044. ÓÙˇı
  3045. ÓÙˇı
  3046. ÓÙˇı
  3047. ÓÙˇı
  3048. ÓÙˇı
  3049. ÓÙˇı
  3050. ÓÙˇı
  3051. ÓÙˇı
  3052. ÓÙˇı
  3053. ÓÙˇı
  3054. ÓÙˇı
  3055. ÓÙˇı
  3056. ÓÙˇı
  3057. ÓÙˇı
  3058. ÓÙˇı
  3059. ÓÙˇı
  3060. ÓÙˇı
  3061. ÓÙˇı
  3062. ÓÙˇı
  3063. ÓÙˇı
  3064. ÓÙˇı
  3065. ÓÙˇı
  3066. ÓÙˇı
  3067. ÓÙˇı
  3068. ÓÙˇı
  3069. ÓÙˇı
  3070. ÓÙˇı
  3071. ÓÙˇı
  3072. ÓÙˇı
  3073. ÓÙˇı
  3074. ÓÙˇı
  3075. ÓÙˇı
  3076. ÓÙˇı
  3077. ÓÙˇı
  3078. ÓÙˇı
  3079. ÓÙˇı
  3080. ÓÙˇı
  3081. ÓÙˇı
  3082. ÓÙˇı
  3083. ÓÙˇı
  3084. ÓÙˇı
  3085. ÓÙˇı
  3086. ÓÙˇıò.@Äl@Älv¥∂
  3087. ÓÙˇı
  3088. ÓÙˇı
  3089. ÓÙˇı
  3090. ÓÙˇı
  3091. ÓÙˇı
  3092. ÓÙˇı
  3093. ÓÙˇı
  3094. ÓÙˇı
  3095. ÓÙˇı
  3096. ÓÙˇı
  3097. ÓÙˇı
  3098. ÓÙˇı
  3099. ÓÙˇı
  3100. ÓÙˇı
  3101. ÓÙˇı
  3102. ÓÙˇı
  3103. ÓÙˇı
  3104. ÓÙˇı
  3105. ÓÙˇı
  3106. ÓÙˇı
  3107. ÓÙˇı
  3108. ÓÙˇı
  3109. ÓÙˇı
  3110. ÓÙˇı
  3111. ÓÙˇı
  3112. ÓÙˇı
  3113. ÓÙˇı
  3114. ÓÙˇı
  3115. ÓÙˇı
  3116. ÓÙˇı
  3117. ÓÙˇı
  3118. ÓÙˇı
  3119. ÓÙˇı
  3120. ÓÙˇı
  3121. ÓÙˇı
  3122. ÓÙˇı
  3123. ÓÙˇı
  3124. ÓÙˇıÁÓÁÓÁÓÁÓÁÓÁÓÁÓÁÓÁÓÁÓÁÓÁÓÁÓÁÓÁÓ
  3125. ÓÙˇÄı
  3126. ÓÙˇÄı
  3127. ÓÙˇı
  3128. ÓÙˇı
  3129. ÓÙˇı
  3130. ÓÙˇı
  3131. ÓÙˇı
  3132. ÓÙˇı
  3133. ÓÙˇı
  3134. ÓÙˇı
  3135. ÓÙˇıò.Ä¿lÄ¿l∂¥ı
  3136. ÓÙˇı
  3137. Û͡‡˙Û˝Ùˇ˝ ˙Û˝Ùˇ˝ ˙Û˝Ùˇ˝ ˙Û˝Ùˇ˝ ˙Û˝Ùˇ˝ ˙Û˝Ùˇ˝ ˙Û˝Ùˇ˝ ˙Û˝Ùˇ˝ ˙Û˝Ùˇ˝ ˙Û˝Ùˇ˝ ˙Û˝Ùˇ˝ ˙Û˝Ùˇ˝ ˙Û˝Ùˇ˝ ˙Û˝Ùˇ˝ ˙
  3138. ÛÍ ˙
  3139. ÛÍ ˙
  3140. ÛÍ ˙
  3141. ÛÍ ˙
  3142. ÛÍ ˙
  3143. ÛÍ ˙
  3144. ÛÍ ˙
  3145. ÛÍ ˙
  3146. ÛÍ ˙
  3147. ÛÍ ˙
  3148. ÛÍ ˙
  3149. ÛÍ ˙
  3150. ÛÍ ˙˘Ùˇ¯¯Ùˇ˘Ùˇ¯¯Ùˇ˘Ùˇ¯¯Ùˇ˘Ùˇ˛¯Ùˇ‡˘Ùˇ˛¯Ùˇ‡˘Ùˇ˛¯Ùˇ‡˘Ùˇ˛¯Ùˇ‡˘Ùˇ˛¯Ùˇ‡˘Ùˇ˛¯Ùˇ‡˘Ùˇ˛¯Ùˇ‡˘Ùˇ˛¯Ùˇ‡˘Ùˇ˛¯Ùˇ‡˘Ùˇ˛¯Ùˇ‡˘Ùˇ˛¯Ùˇ‡˘Ùˇ˛¯Ùˇ‡˘Ùˇ˛¯Ùˇ‡˘Ùˇ˛¯Ùˇ‡˘Ùˇ˛¯Ùˇ‡˘Ùˇ˛¯Ùˇ‡˘Ùˇ˛¯Ùˇ‡˘Ùˇ˛¯Ùˇ‡˙Úˇ¸˘Ùˇ‡˙ÄÙˇ˛˘Ùˇ‡˙ÄÙˇ˛˘Ùˇ‡˙ÄÙˇ˛˘Ùˇ‡˙ÄÙˇ˛˘Ùˇ‡˙ÄÙˇ˛˘Ùˇ‡˙ÄÙˇ˛˘Ùˇ‡˙ÄÙˇ˛˘Ùˇ‡˙ÄÙˇ˛˘Ùˇ‡˙ÄÙˇ˛˘Ùˇ‡˙ÄÙˇ˛˘Ùˇ‡˙ÄÙˇ˛˘Ùˇ‡˙ÄÙˇ˛˘Ùˇ‡˙Äıˇ˛˘Ùˇ‡ò.¿ÿl¿ÿlı¥
  3151. ˙Äıˇ˛˘Ùˇ‡˙Äıˇ˛˘Ùˇ‡˙ÄÛÚ ˙˙ÄÛÚ ˙˙ÄÛÚ ˙˙ÄÛÚ ˙˙ÄÛÚ ˙˙ÄÛÚ ˙˙ÄÛÚ ˙˙ÄÛÚ ˙˙ÄÛÚ ˙˙ÄÛÚ ˙˙ÄÛÚ ˙˙ÄÛÚ ˙˙ÄÛÚ ˙˙ÄÛÚ ˙˙ÄÛÚ ˙ıˇ˛ÙˇÙˇıˇ˛ÙˇÙˇÙˇ¿Ùˇ¸Ùˇ‡Ùˇ¿Ùˇ¸Ùˇ‡Ùˇ¿Ùˇ¸Ùˇ‡Ùˇ¿Ùˇ¸Ùˇ‡Ùˇ¿Ùˇ¸Ùˇ‡òÅl@lHHQoh •IJˇˇˇˇˇˇˇˇˇˇÃÃˇˇˇˇôôˇˇˇˇffˇˇˇˇ33ˇˇˇˇˇˇÃÃˇˇˇˇÃÃÃÃˇˇÃÃôô    ˇˇÃÃff
  3152. ˇˇÃÃ33 ˇˇÃà ˇˇôôˇˇ
  3153. ˇˇôôÃÃˇˇôôôôˇˇôôffˇˇôô33ˇˇôôˇˇffˇˇˇˇffÃÃˇˇffôôˇˇffffˇˇff33ˇˇffˇˇ33ˇˇˇˇ33ÃÃˇˇ33ôôˇˇ33ffˇˇ3333ˇˇ33ˇˇˇˇˇˇÃàˇˇôô!ˇˇff"ˇˇ33#ˇˇ$ÃÃˇˇˇˇ%ÃÃˇˇÃÃ&ÃÃˇˇôô'ÃÃˇˇff(ÃÃˇˇ33)ÃÃˇˇ*ÃÃÃÃˇˇ+ÃÃÃÃÃÃ,ÃÃÃÃôô-ÃÃÃÃff.ÃÃÃÃ33/ÃÃÃÃ0ÃÃôôˇˇ1ÃÃôôÃÃ2ÃÃôôôô3ÃÃôôff4ÃÃôô335ÃÃôô6ÃÃffˇˇ7ÃÃffÃÃ8ÃÃffôô9ÃÃffff:ÃÃff33;ÃÃff<ÃÃ33ˇˇ=ÃÃ33ÃÃ>ÃÃ33ôô?ÃÃ33ff@ÃÃ3333AÃÃ33BÃÃˇˇCÃÃÃÃDÃÃôôEÃÃffFÃÃ33GÃÃHôôˇˇˇˇIôôˇˇÃÃJôôˇˇôôKôôˇˇffLôôˇˇ33MôôˇˇNôôÃÃˇˇOôôÃÃÃÃPôôÃÃôôQôôÃÃffRôôÃÃ33SôôÃÃTôôôôˇˇUôôôôÃÃVôôôôôôWôôôôffXôôôô33YôôôôZôôffˇˇ[ôôffÃÃ\ôôffôô]ôôffff^ôôff33_ôôff`ôô33ˇˇaôô33ÃÃbôô33ôôcôô33ffdôô3333eôô33fôôˇˇgôôÃÃhôôôôiôôffjôô33kôôlffˇˇˇˇmffˇˇÃÃnffˇˇôôoffˇˇffpffˇˇ33qffˇˇrffÃÃˇˇsffÃÃÃÃtffÃÃôôuffÃÃffvffÃÃ33wffÃÃxffôôˇˇyffôôÃÃzffôôôô{ffôôff|ffôô33}ffôô~ffffˇˇffffÃÃÄffffôôÅffffffÇffff33ÉffffÑff33ˇˇÖff33ÃÃÜff33ôôáff33ffàff3333âff33äffˇˇãffÃÃåffôôçfffféff33èffê33ˇˇˇˇë33ˇˇÃÃí33ˇˇôôì33ˇˇffî33ˇˇ33ï33ˇˇñ33ÃÃˇˇó33ÃÃÃÃò33ÃÃôôô33ÃÃffö33ÃÃ33õ33ÃÃú33ôôˇˇù33ôôÃÃû33ôôôôü33ôôff†33ôô33°33ôô¢33ffˇˇ£33ffÃç33ffôô•33ffff¶33ff33ß33ff®3333ˇˇ©3333ÃÙ3333ôô´3333ff¨333333≠3333Æ33ˇˇØ33ÃÃ∞33ôô±33ff≤3333≥33¥ˇˇˇˇµˇˇÃÃ∂ˇˇôô∑ˇˇff∏ˇˇ33πˇˇ∫ÃÃˇˇªÃÃÃúÃÃôôΩÃÃffæÃÃ33øÃÿôôˇˇ¡ôôÃìôôôô√ôôffƒôô33≈ôôΔffˇˇ«ffÃûffôô…ffff ff33ÀffÃ33ˇˇÕ33ÃÃŒ33ôôœ33ff–3333—33“ˇˇ”ÃÑôô’ff÷33◊ÿˇˇˇŸ˘`˘`˘`⁄Ú–Ú–Ú–€Ï@Ï@Ï@‹Â∞Â∞Â∞›fl fl fl fiÿêÿêÿêfl“““‡ÀpÀpÀp·ƒ‡ƒ‡ƒ‡‚æPæPæP„∑¿∑¿∑¿‰±0±0±0™†™†™†Ê§§§ÁùÄùÄùÄËñññÈê`ê`ê`Íâ–â–â–ÎÉ@É@É@Ï|∞|∞|∞Ìv v v ÓoêoêoêÔiiibpbpbpÒ[‡[‡[‡ÚUPUPUPÛN¿N¿N¿ÙH0H0H0ıA†A†A†ˆ;;;˜4Ä4Ä4į---˘'`'`'`˙ – – –˚@@@¸∞∞∞˝
  3154.  
  3155.  
  3156.  ˛êêê@l6¥v'ÅÅïÅÅïÅÅïʼnïˇûsʼnkˇˇûtʼnjˇ˝ˇ°tʼnjˇ˝ˇ°tʼnjˇ˝ˇ°tʼnjˇ˝ˇ°tʼnjˇ˝ˇ°tʼnjˇ˝ˇ°tʼnjˇ˝ˇ°tʼnjˇ˝ˇ°tʼnjˇ˝ˇ°tʼnjˇ˝ˇ°tʼnjˇ˝ˇ°tʼnjˇ˝ˇ°tʼnjˇ˝ˇ°tʼnjˇ˝ˇ°tʼnjˇ˝ˇ°tʼnjˇ˝ˇ°tʼnjˇ˝ˇ°tʼnjˇ˝ˇ°tʼnjˇ˝ˇ°tʼnjˇˇˇˇˇˇˇˇ˝ˇ°sʼnCˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ˝ˇ˛ˇ˛ˇ˝ˇ°tʼnjˇˇˇˇˇ˛ˇˇˇ˛ˇˇ˛ˇˇ˛ˇ˛ˇ˛ˇˇˇˇˇˇ˛˝ˇ°rʼn)ˇˇˇˇˇˇˇˇˇˇ˝ˇˇ˝ˇ3ˇˇˇˇˇˇˇˇˇˇˇ˝ˇ°tʼnjˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ˝ˇ°tʼnjˇˇˇˇˇ˛˛ˇˇˇˇˇˇˇ˛ˇ˛ˇˇˇ˛ˇˇˇ˛ˇˇ˝ˇ°tʼnjˇˇ˝ˇ°tʼnjˇˇˇ˝ˇ°tʼnjˇ˝ˇ°tʼnjˇ˝ˇ°tʼnjˇˇˇˇˇ˝ˇ°tʼn&ˇˇˇ˛ˇ˛ˇ<ˇˇˇˇˇˇˇˇ˛ˇ˛ˇˇ˛˝ˇ°tʼnjˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ˝ˇ°tʼnjˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ˝ˇ°tʼnjˇˇˇˇˇˇˇ˛ˇˇˇˇˇˇˇ˛ˇ˛ˇ˝ˇ°tʼn"ˇ˛ˇ˛ˇ˛ˇ    ˇˇˇˇ˛ˇ/ˇˇˇˇˇˇ˝ˇ°tʼnjˇˇˇ˝ˇ°tʼnjˇˇˇ˝ˇ°tʼnjˇ˝ˇ°tʼnjˇ˝ˇ°tʼnjˇ˝ˇ°tʼnjˇ˝ˇ°tʼnjˇ˝ˇ°tʼnjˇ˝ˇ°tʼnjˇ˝ˇ°tʼnjˇˇˇ˝ˇ°sʼn2ˇ˝ˇ3˝ˇ°tʼnjˇˇˇˇˇ˝ˇ°sʼn2ˇˇˇ˝3ˇˇ˝ˇ°qʼn1ˇˇˇ˚2ˇˇ˝ˇ°oʼn0ˇˇˇ˘1ˇˇ˝ˇ°lʼn,ˇ˛ˇ˜0ˇˇ˝ˇ°jʼn-ˇˇˇÙ/ˇˇ˝ˇ°hʼn,ˇˇˇÚ.ˇˇ˝ˇ°fʼn+ˇˇˇ-ˇˇ˝ˇ°dʼn*ˇˇˇÓ,ˇˇ˝ˇ°bʼn)ˇˇˇÏ+ˇˇ˝ˇ°`ʼn(ˇˇˇÍ*ˇˇ˝ˇ°^ʼn'ˇˇˇË)ˇˇ˝ˇ°`ʼn&ˇˇˇÒ˚ˇ¸(ˇˇ˝ˇ°òÅl@ÄlHHQod ¶Ä˛ˇˇˇˇˇˇˇˇˇˇÃÃˇˇˇˇôôˇˇˇˇffˇˇˇˇ33ˇˇˇˇˇˇÃÃˇˇˇˇÃÃÃÃˇˇÃÃôô    ˇˇÃÃff
  3157. ˇˇÃÃ33 ˇˇÃà ˇˇôôˇˇ
  3158. ˇˇôôÃÃˇˇôôôôˇˇôôffˇˇôô33ˇˇôôˇˇffˇˇˇˇffÃÃˇˇffôôˇˇffffˇˇff33ˇˇffˇˇ33ˇˇˇˇ33ÃÃˇˇ33ôôˇˇ33ffˇˇ3333ˇˇ33ˇˇˇˇˇˇÃàˇˇôô!ˇˇff"ˇˇ33#ˇˇ$ÃÃˇˇˇˇ%ÃÃˇˇÃÃ&ÃÃˇˇôô'ÃÃˇˇff(ÃÃˇˇ33)ÃÃˇˇ*ÃÃÃÃˇˇ+ÃÃÃÃÃÃ,ÃÃÃÃôô-ÃÃÃÃff.ÃÃÃÃ33/ÃÃÃÃ0ÃÃôôˇˇ1ÃÃôôÃÃ2ÃÃôôôô3ÃÃôôff4ÃÃôô335ÃÃôô6ÃÃffˇˇ7ÃÃffÃÃ8ÃÃffôô9ÃÃffff:ÃÃff33;ÃÃff<ÃÃ33ˇˇ=ÃÃ33ÃÃ>ÃÃ33ôô?ÃÃ33ff@ÃÃ3333AÃÃ33BÃÃˇˇCÃÃÃÃDÃÃôôEÃÃffFÃÃ33GÃÃHôôˇˇˇˇIôôˇˇÃÃJôôˇˇôôKôôˇˇffLôôˇˇ33MôôˇˇNôôÃÃˇˇOôôÃÃÃÃPôôÃÃôôQôôÃÃffRôôÃÃ33SôôÃÃTôôôôˇˇUôôôôÃÃVôôôôôôWôôôôffXôôôô33YôôôôZôôffˇˇ[ôôffÃÃ\ôôffôô]ôôffff^ôôff33_ôôff`ôô33ˇˇaôô33ÃÃbôô33ôôcôô33ffdôô3333eôô33fôôˇˇgôôÃÃhôôôôiôôffjôô33kôôlffˇˇˇˇmffˇˇÃÃnffˇˇôôoffˇˇffpffˇˇ33qffˇˇrffÃÃˇˇsffÃÃÃÃtffÃÃôôuffÃÃffvffÃÃ33wffÃÃxffôôˇˇyffôôÃÃzffôôôô{ffôôff|ffôô33}ffôô~ffffˇˇffffÃÃÄffffôôÅffffffÇffff33ÉffffÑff33ˇˇÖff33ÃÃÜff33ôôáff33ffàff3333âff33äffˇˇãffÃÃåffôôçfffféff33èffê33ˇˇˇˇë33ˇˇÃÃí33ˇˇôôì33ˇˇffî33ˇˇ33ï33ˇˇñ33ÃÃˇˇó33ÃÃÃÃò33ÃÃôôô33ÃÃffö33ÃÃ33õ33ÃÃú33ôôˇˇù33ôôÃÃû33ôôôôü33ôôff†33ôô33°33ôô¢33ffˇˇ£33ffÃç33ffôô•33ffff¶33ff33ß33ff®3333ˇˇ©3333ÃÙ3333ôô´3333ff¨333333≠3333Æ33ˇˇØ33ÃÃ∞33ôô±33ff≤3333≥33¥ˇˇˇˇµˇˇÃÃ∂ˇˇôô∑ˇˇff∏ˇˇ33πˇˇ∫ÃÃˇˇªÃÃÃúÃÃôôΩÃÃffæÃÃ33øÃÿôôˇˇ¡ôôÃìôôôô√ôôffƒôô33≈ôôΔffˇˇ«ffÃûffôô…ffff ff33ÀffÃ33ˇˇÕ33ÃÃŒ33ôôœ33ff–3333—33“ˇˇ”ÃÑôô’ff÷33◊ÿˇˇˇŸ˘`˘`˘`⁄Ú–Ú–Ú–€Ï@Ï@Ï@‹Â∞Â∞Â∞›fl fl fl fiÿêÿêÿêfl“““‡ÀpÀpÀp·ƒ‡ƒ‡ƒ‡‚æPæPæP„∑¿∑¿∑¿‰±0±0±0™†™†™†Ê§§§ÁùÄùÄùÄËñññÈê`ê`ê`Íâ–â–â–ÎÉ@É@É@Ï|∞|∞|∞Ìv v v ÓoêoêoêÔiiibpbpbpÒ[‡[‡[‡ÚUPUPUPÛN¿N¿N¿ÙH0H0H0ıA†A†A†ˆ;;;˜4Ä4Ä4į---˘'`'`'`˙ – – –˚@@@¸∞∞∞˝
  3159.  
  3160.  
  3161.  ˛êêê@Älv¥∂'cʼn%ˇˇÚ˛ˇ˝ˇˇ¸'ˇˇ˝ˇ°eʼn&ˇˇˇÙˇˇ˙ˇˇ˝'ˇˇ˝ˇ°eʼn'ˇˇˇı¸ˇ¸,ˇˇˇˇ˝ˇ°cʼn(ˇˇˇ˙Ûˇ˝ˇ'˝ˇ°cʼn)ˇˇˇ˚Ûˇ¸ˇ%˝ˇ°gʼn*ˇˇˇ¯ˇ˘ˇ¸ˇ%˝ˇ°eʼn+ˇˇˇ˘ˇˇ˜¸ˇ%˝ˇ°eʼn,ˇˇˇ˘˛ˇ˘¸ˇ%˝ˇ°fʼn-ˇˇˇ¯˘ˇ¸ˇ%˝ˇ°gʼn.ˇˇˇıˇˇ˙ˇ%˝ˇ°jʼn/ˇˇˇ˜ˇˇ˚ˇ%˝ˇ°mʼn0ˇˇˇ˘ˇˇ¸ˇ%˝ˇ°pʼn1ˇˇˇ˚ˇˇ˝ˇ%˝ˇ°sʼn2ˇˇˇ˝3ˇˇ˝ˇ°tʼnjˇˇˇˇˇ˝ˇ°sʼn2ˇ˝ˇ3˝ˇ°tʼnjˇˇˇ˝ˇ°tʼnjˇ˝ˇ°tʼnjˇ˝ˇ°tʼnjˇ˝ˇ°tʼnjˇ˝ˇ°tʼnjˇ˝ˇ°tʼnjˇ˝ˇ°tʼnjˇ˝ˇ°tʼnjˇ˝ˇ°tʼnjˇ˝ˇ°tʼnjˇ˝ˇ°tʼnjˇ˝ˇ°tʼnjˇ˝ˇ°tʼnjˇ˝ˇ°tʼnjˇ˝ˇ°tʼnjˇ˝ˇ°tʼnjˇ˝ˇ°tʼnjˇ˝ˇ°tʼnjˇ˝ˇ°Å‰íˇ°Å‚îˇ°Å‚îˇ°
  3162. ÅÆˇÅÈ
  3163. ÅÆˇÅÈ
  3164. ÅÆˇÅÈ
  3165. ÅÆˇÅÈ
  3166. ÅÆˇÅÈ
  3167. ÅÆˇÅÈ
  3168. ÅÆˇÅÈ
  3169. ÅÆˇÅÈ
  3170. ÅÆˇÅÈ
  3171. ÅÆˇÅÈ
  3172. ÅÆˇÅÈ
  3173. ÅÆˇÅÈ
  3174. ÅÆˇÅÈ
  3175. ÅÆˇÅÈ
  3176. ÅÆˇÅÈʼnïˇûsʼnkˇˇûtʼnjˇ˝ˇ°tʼnˇ˛ˇPˇˇ˝ˇ°sʼn ˇˇˇˇˇ˝ˇˇˇˇ˛ˇ ˇˇˇˇ˛ˇˇˇˇˇ˛ˇ˛ˇˇˇˇˇ˝ˇ°tʼnjˇˇˇ˛ˇ˛ˇ˛ˇˇ˛ˇˇˇˇˇˇ˛ˇˇˇˇ˛ˇ˛ˇˇ˛ˇ˝ˇ°mʼnˇˇˇ¸ˇˇˇˇ¸ˇˇˇ˝ˇˇˇˇˇˇˇˇˇˇˇ¸ˇ˝ˇ°tʼnjˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ˝ˇ°tʼnˇ˛ˇˇ˛ˇ˛˛ˇ ˛˛ˇˇˇˇˇˇˇˇ˛ˇˇˇ˛˛ˇ ˛ˇˇ˛˛ˇˇ˝ˇ°tʼnjˇˇˇ˝ˇ°tʼnjˇˇˇˇ˝ˇ°òÅlÄ¿lHHQoh ßIJˇˇˇˇˇˇˇˇˇˇÃÃˇˇˇˇôôˇˇˇˇffˇˇˇˇ33ˇˇˇˇˇˇÃÃˇˇˇˇÃÃÃÃˇˇÃÃôô    ˇˇÃÃff
  3177. ˇˇÃÃ33 ˇˇÃà ˇˇôôˇˇ
  3178. ˇˇôôÃÃˇˇôôôôˇˇôôffˇˇôô33ˇˇôôˇˇffˇˇˇˇffÃÃˇˇffôôˇˇffffˇˇff33ˇˇffˇˇ33ˇˇˇˇ33ÃÃˇˇ33ôôˇˇ33ffˇˇ3333ˇˇ33ˇˇˇˇˇˇÃàˇˇôô!ˇˇff"ˇˇ33#ˇˇ$ÃÃˇˇˇˇ%ÃÃˇˇÃÃ&ÃÃˇˇôô'ÃÃˇˇff(ÃÃˇˇ33)ÃÃˇˇ*ÃÃÃÃˇˇ+ÃÃÃÃÃÃ,ÃÃÃÃôô-ÃÃÃÃff.ÃÃÃÃ33/ÃÃÃÃ0ÃÃôôˇˇ1ÃÃôôÃÃ2ÃÃôôôô3ÃÃôôff4ÃÃôô335ÃÃôô6ÃÃffˇˇ7ÃÃffÃÃ8ÃÃffôô9ÃÃffff:ÃÃff33;ÃÃff<ÃÃ33ˇˇ=ÃÃ33ÃÃ>ÃÃ33ôô?ÃÃ33ff@ÃÃ3333AÃÃ33BÃÃˇˇCÃÃÃÃDÃÃôôEÃÃffFÃÃ33GÃÃHôôˇˇˇˇIôôˇˇÃÃJôôˇˇôôKôôˇˇffLôôˇˇ33MôôˇˇNôôÃÃˇˇOôôÃÃÃÃPôôÃÃôôQôôÃÃffRôôÃÃ33SôôÃÃTôôôôˇˇUôôôôÃÃVôôôôôôWôôôôffXôôôô33YôôôôZôôffˇˇ[ôôffÃÃ\ôôffôô]ôôffff^ôôff33_ôôff`ôô33ˇˇaôô33ÃÃbôô33ôôcôô33ffdôô3333eôô33fôôˇˇgôôÃÃhôôôôiôôffjôô33kôôlffˇˇˇˇmffˇˇÃÃnffˇˇôôoffˇˇffpffˇˇ33qffˇˇrffÃÃˇˇsffÃÃÃÃtffÃÃôôuffÃÃffvffÃÃ33wffÃÃxffôôˇˇyffôôÃÃzffôôôô{ffôôff|ffôô33}ffôô~ffffˇˇffffÃÃÄffffôôÅffffffÇffff33ÉffffÑff33ˇˇÖff33ÃÃÜff33ôôáff33ffàff3333âff33äffˇˇãffÃÃåffôôçfffféff33èffê33ˇˇˇˇë33ˇˇÃÃí33ˇˇôôì33ˇˇffî33ˇˇ33ï33ˇˇñ33ÃÃˇˇó33ÃÃÃÃò33ÃÃôôô33ÃÃffö33ÃÃ33õ33ÃÃú33ôôˇˇù33ôôÃÃû33ôôôôü33ôôff†33ôô33°33ôô¢33ffˇˇ£33ffÃç33ffôô•33ffff¶33ff33ß33ff®3333ˇˇ©3333ÃÙ3333ôô´3333ff¨333333≠3333Æ33ˇˇØ33ÃÃ∞33ôô±33ff≤3333≥33¥ˇˇˇˇµˇˇÃÃ∂ˇˇôô∑ˇˇff∏ˇˇ33πˇˇ∫ÃÃˇˇªÃÃÃúÃÃôôΩÃÃffæÃÃ33øÃÿôôˇˇ¡ôôÃìôôôô√ôôffƒôô33≈ôôΔffˇˇ«ffÃûffôô…ffff ff33ÀffÃ33ˇˇÕ33ÃÃŒ33ôôœ33ff–3333—33“ˇˇ”ÃÑôô’ff÷33◊ÿˇˇˇŸ˘`˘`˘`⁄Ú–Ú–Ú–€Ï@Ï@Ï@‹Â∞Â∞Â∞›fl fl fl fiÿêÿêÿêfl“““‡ÀpÀpÀp·ƒ‡ƒ‡ƒ‡‚æPæPæP„∑¿∑¿∑¿‰±0±0±0™†™†™†Ê§§§ÁùÄùÄùÄËñññÈê`ê`ê`Íâ–â–â–ÎÉ@É@É@Ï|∞|∞|∞Ìv v v ÓoêoêoêÔiiibpbpbpÒ[‡[‡[‡ÚUPUPUPÛN¿N¿N¿ÙH0H0H0ıA†A†A†ˆ;;;˜4Ä4Ä4į---˘'`'`'`˙ – – –˚@@@¸∞∞∞˝
  3179.  
  3180.  
  3181.  ˛êêêÄ¿l∂¥ı'tʼnjˇ˝ˇ°sãŸˇiˇˇˇˇˇˇˇ÷ˇ»xãˇ€ˇˇˇˇˇ¸ˇ˛ˇˇˇ˛ˇˇˇ˛ˇˇˇˇ˛ˇ˛ˇ    ˇˇˇ˛ˇˇˇˇˇ˛ˇˇˇ˝ˇ€ˇ»zãˇ€jˇˇˇˇˇ˛ˇ˛ˇˇˇˇˇˇ˛ˇ˛ˇˇˇˇˇˇˇˇˇˇˇˇˇˇ˛ˇˇˇ˝ˇ€ˇ»vãˇ€)ˇˇˇˇˇˇˇˇˇˇˇˇˇ¸ˇˇˇˇˇˇˇˇ¸ˇˇ˛ˇˇˇˇˇˇ˝ˇ€ˇ»zãˇ€jˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ˝ˇ€ˇ»zãˇ€Lˇˇˇˇˇˇ˛ˇ˛ˇˇˇˇˇˇˇ˛ˇ˛˛˛ˇˇ˛ˇˇˇˇ˛ˇˇˇ˛ˇ˛ˇˇ˝ˇ€ˇ»zãˇ€jˇˇˇˇˇˇˇ˝ˇ€ˇ»zãˇ€jˇˇˇˇˇˇˇˇˇ˝ˇ€ˇ»zãˇ€jˇ˝ˇ€ˇ»zãˇ€jˇ˝ˇ€ˇ»zãˇ€jˇ˝ˇ€ˇ»zãˇ€jˇ˝ˇ€ˇ»ãˇ€íˇ€ˇ»ãˇŸîˇ€ˇ»ãˇŸîˇ€ˇ» ãˇÅΔˇ» ãˇÅΔˇ» ãˇÅΔˇ» ãˇÅΔˇ» ãˇÅΔˇ» ãˇÅΔˇ» ãˇÅΔˇ» ãˇÅΔˇ» ãˇÅΔˇ» ãˇÅΔˇ» ãˇÅΔˇ» ãˇÅΔˇ» ãˇÅΔˇ»
  3182. ¡îˇ≤ïˇ˝·¡lˇˇˇ≤kˇˇ˝·¡lˇˇ≤kˇˇ˝„¡kˇ˛ˇ¥jˇ˝ˇ„¡kˇ˛ˇ¥jˇ˝ˇ„¡ ˇ˛ˇ\ˇˇˇˇ˛ˇ¥
  3183. ˇ˛ˇ\ˇˇˇ˝ˇ‡¡ˇˇˇˇˇ˝ˇˇˇˇ˛ˇ ˇˇˇˇ˛ˇˇˇˇˇ˛ˇ˛ˇˇˇˇˇˇˇ˛ˇˇˇˇˇ˛ˇ¥ˇˇˇˇˇ˛ˇˇˇˇˇ˛ˇ
  3184. ˇˇˇˇ¸ˇˇˇ˛ˇ˛ˇˇˇˇˇˇˇˇˇˇ˛ˇ˛ˇ˝ˇ„¡kˇˇˇˇˇ˛ˇ˛ˇˇ˛ˇˇˇˇˇˇ˛ˇˇˇˇ˛ˇ˛ˇˇ˛ˇˇˇˇ˛ˇ˛ˇˇ˛˛ˇ¥9ˇˇˇˇˇˇˇ˛ˇ˛ˇ˛ˇˇ˛ˇ˛˛ˇ˛˛ˇ-ˇ˛ˇ˛ˇˇˇˇ˛ˇ˛ˇ˛ˇˇ˝ˇ“¡
  3185. ˇ˚ˇ    ˇˇˇˇ¸ˇˇˇ˝ˇˇˇˇˇˇˇˇˇˇˇ¸ˇ ˇˇˇˇ¸ˇˇˇ˛ˇ¥ˇˇˇ¸ˇˇˇˇ¸ˇˇˇ˝ˇˇˇˇˇˇˇˇˇˇ¸ˇ!ˇˇˇˇˇˇˇˇˇˇ˝ˇ„¡kˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ˛ˇ¥jˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ˝ˇ„¡ ˇ˛ˇˇˇˇ˛˛ˇP˛˛ˇˇˇˇˇˇˇˇ˛ˇˇˇˇ˛ˇˇ˛ˇˇ˛˛ˇˇˇ˛ˇ˛ˇˇ˛˛ˇ˛ˇ¥;ˇ˛ˇˇˇˇˇˇ˛ˇˇ˛ˇ˛ˇ˛˛ˇ˛ˇˇ˛ˇˇˇˇ˛˛ˇ+ˇˇ˛ˇ˛ˇ˛˛ˇ˛ˇˇ˛ˇˇˇ˛˝ˇ„¡kˇˇˇ˛ˇ¥jˇˇˇ˝ˇ„¡kˇˇˇˇ˛ˇ¥jˇˇˇˇ˝ˇ„¡kˇ˛ˇ¥jˇ˝ˇ„¡kˇˇˇˇ˛ˇ¥jˇˇˇˇ˝ˇfl¡ˇˇˇ˛ˇˇˇ˛ˇ˛ˇˇˇˇˇˇˇˇ¸ˇ˛ˇˇˇ˛ˇˇˇ˛ˇˇˇ˛ˇ¥ˇˇˇ˛ˇˇˇ˛ˇ˛ˇˇˇˇˇˇˇˇ¸ˇ˛ˇˇˇ˛ˇˇˇ˛ˇˇˇ˝ˇ„¡kˇˇ˛ˇˇˇ˛ˇ˛ˇ˛ˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ˛ˇˇ˛ˇ¥jˇˇ˛ˇˇ˛ˇˇ˛ˇˇˇˇ˛˛ˇ˛ˇ˛ˇ˛ˇˇˇˇ˛ˇ˛ˇˇˇˇ˝ˇfl¡(ˇˇˇˇˇˇˇˇˇˇˇ˝ˇ ˇˇˇˇˇˇˇˇˇˇˇˇˇ˝ˇˇˇˇ˛ˇ¥)ˇˇˇˇˇˇˇˇˇˇˇ˝ˇ ˇˇˇˇˇˇˇˇˇˇˇˇˇ˝ˇˇˇˇ˝ˇ„¡kˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ˛ˇ¥jˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ˝ˇ„¡kˇ˛ˇˇˇ˛ˇˇ˛ˇ˛ˇˇˇˇˇˇˇˇˇˇˇ˛ˇˇˇˇˇˇˇˇˇ˛ˇ˛ˇ¥ˇ˛ˇˇˇ˛ˇ ˛ˇˇˇˇˇˇˇ˛ˇ˛ˇ˛ˇ˛ˇ%ˇˇˇ˛ˇ˛ˇˇ˛˝ˇ„¡kˇˇ˛ˇ¥jˇˇ˝ˇ‰…¯ˇjˇ˜ˇªjˇˇ˝ˇÎ…ˇ˙kˇ˛ˇ˚ˇªjˇ˝ˇÎ…ˇ˙kˇˇˇˇˇˇˇˇˇˇˇˇˇ˛ˇ˚ˇªjˇˇˇˇˇˇˇˇˇˇˇ˝ˇÎ…ˇ˙    ˇˇ˛ˇ˛ˇˇˇˇˇ˛ˇˇˇ˛ˇˇˇˇˇ˛ˇˇˇˇ˛ˇˇˇˇˇˇ˛ˇˇˇˇˇ˛ˇ˚ˇªˇˇ˛ˇ˛ˇˇˇˇˇ˛ˇˇˇ˛ˇˇˇˇˇ˛ˇ˛ˇ˛ˇˇˇˇˇˇˇˇˇ˛ˇˇˇ˝ˇÎ…ˇ˙kˇˇˇ˛ˇˇˇˇˇ˛˛ˇ˛ˇ˛ˇˇˇ˛ˇˇ˛ˇˇˇˇˇˇˇˇˇ˛ˇ˛ˇˇ˛ˇ˚ˇªjˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ˛ˇˇ˛ˇ˛ˇ˛ˇ˛ˇˇˇˇ˛ˇ˛ˇ˝ˇ‚…ˇ˙ˇˇˇˇˇˇ¸ˇ1ˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ¸ˇ ˇˇˇˇ¸ˇ
  3186. ˇ˛ˇ˚ˇªˇˇˇˇˇˇˇ˝ˇ0ˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ¸ˇˇˇˇˇˇˇˇˇ˝ˇÎ…ˇ˙kˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ˛ˇ˚ˇªjˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ˝ˇÎ…ˇ˙ˇˇ˛ˇ˛ˇ(ˇˇˇˇ˛ˇˇ˛ˇ˛˛ˇ˛ˇˇ˛ˇ,ˇˇ˛ˇˇˇˇˇ˛ˇ˛ˇˇ˛ˇ˛ˇ˚ˇªjˇ˛ˇˇ˛ˇˇˇˇˇˇˇ˛ˇˇˇˇˇˇ˛ˇˇ˛ˇˇˇˇˇ˛ˇ˛ˇˇˇˇ˛ˇˇ˛ˇˇ˝ˇÎ…ˇ˙kˇˇˇˇˇˇˇˇˇ˛ˇ˚ˇªjˇˇˇˇˇˇˇˇˇ˝ˇÎ…ˇ˙kˇˇˇˇˇˇˇˇˇˇˇ˛ˇ˚ˇªjˇˇˇˇˇˇˇˇˇˇˇ˝ˇÎ…ˇ˙kˇ˛ˇ˚ˇªjˇ˝ˇÎ…ˇ˙kˇ˛ˇ˚ˇªjˇ˝ˇ…ˇ˙íˇ˚ˇªíˇ…ˇ˜ïˇ˚ˇ∏ïˇòÅl¿ÿlHHQod ®Ä˛ˇˇˇˇˇˇˇˇˇˇÃÃˇˇˇˇôôˇˇˇˇffˇˇˇˇ33ˇˇˇˇˇˇÃÃˇˇˇˇÃÃÃÃˇˇÃÃôô    ˇˇÃÃff
  3187. ˇˇÃÃ33 ˇˇÃà ˇˇôôˇˇ
  3188. ˇˇôôÃÃˇˇôôôôˇˇôôffˇˇôô33ˇˇôôˇˇffˇˇˇˇffÃÃˇˇffôôˇˇffffˇˇff33ˇˇffˇˇ33ˇˇˇˇ33ÃÃˇˇ33ôôˇˇ33ffˇˇ3333ˇˇ33ˇˇˇˇˇˇÃàˇˇôô!ˇˇff"ˇˇ33#ˇˇ$ÃÃˇˇˇˇ%ÃÃˇˇÃÃ&ÃÃˇˇôô'ÃÃˇˇff(ÃÃˇˇ33)ÃÃˇˇ*ÃÃÃÃˇˇ+ÃÃÃÃÃÃ,ÃÃÃÃôô-ÃÃÃÃff.ÃÃÃÃ33/ÃÃÃÃ0ÃÃôôˇˇ1ÃÃôôÃÃ2ÃÃôôôô3ÃÃôôff4ÃÃôô335ÃÃôô6ÃÃffˇˇ7ÃÃffÃÃ8ÃÃffôô9ÃÃffff:ÃÃff33;ÃÃff<ÃÃ33ˇˇ=ÃÃ33ÃÃ>ÃÃ33ôô?ÃÃ33ff@ÃÃ3333AÃÃ33BÃÃˇˇCÃÃÃÃDÃÃôôEÃÃffFÃÃ33GÃÃHôôˇˇˇˇIôôˇˇÃÃJôôˇˇôôKôôˇˇffLôôˇˇ33MôôˇˇNôôÃÃˇˇOôôÃÃÃÃPôôÃÃôôQôôÃÃffRôôÃÃ33SôôÃÃTôôôôˇˇUôôôôÃÃVôôôôôôWôôôôffXôôôô33YôôôôZôôffˇˇ[ôôffÃÃ\ôôffôô]ôôffff^ôôff33_ôôff`ôô33ˇˇaôô33ÃÃbôô33ôôcôô33ffdôô3333eôô33fôôˇˇgôôÃÃhôôôôiôôffjôô33kôôlffˇˇˇˇmffˇˇÃÃnffˇˇôôoffˇˇffpffˇˇ33qffˇˇrffÃÃˇˇsffÃÃÃÃtffÃÃôôuffÃÃffvffÃÃ33wffÃÃxffôôˇˇyffôôÃÃzffôôôô{ffôôff|ffôô33}ffôô~ffffˇˇffffÃÃÄffffôôÅffffffÇffff33ÉffffÑff33ˇˇÖff33ÃÃÜff33ôôáff33ffàff3333âff33äffˇˇãffÃÃåffôôçfffféff33èffê33ˇˇˇˇë33ˇˇÃÃí33ˇˇôôì33ˇˇffî33ˇˇ33ï33ˇˇñ33ÃÃˇˇó33ÃÃÃÃò33ÃÃôôô33ÃÃffö33ÃÃ33õ33ÃÃú33ôôˇˇù33ôôÃÃû33ôôôôü33ôôff†33ôô33°33ôô¢33ffˇˇ£33ffÃç33ffôô•33ffff¶33ff33ß33ff®3333ˇˇ©3333ÃÙ3333ôô´3333ff¨333333≠3333Æ33ˇˇØ33ÃÃ∞33ôô±33ff≤3333≥33¥ˇˇˇˇµˇˇÃÃ∂ˇˇôô∑ˇˇff∏ˇˇ33πˇˇ∫ÃÃˇˇªÃÃÃúÃÃôôΩÃÃffæÃÃ33øÃÿôôˇˇ¡ôôÃìôôôô√ôôffƒôô33≈ôôΔffˇˇ«ffÃûffôô…ffff ff33ÀffÃ33ˇˇÕ33ÃÃŒ33ôôœ33ff–3333—33“ˇˇ”ÃÑôô’ff÷33◊ÿˇˇˇŸ˘`˘`˘`⁄Ú–Ú–Ú–€Ï@Ï@Ï@‹Â∞Â∞Â∞›fl fl fl fiÿêÿêÿêfl“““‡ÀpÀpÀp·ƒ‡ƒ‡ƒ‡‚æPæPæP„∑¿∑¿∑¿‰±0±0±0™†™†™†Ê§§§ÁùÄùÄùÄËñññÈê`ê`ê`Íâ–â–â–ÎÉ@É@É@Ï|∞|∞|∞Ìv v v ÓoêoêoêÔiiibpbpbpÒ[‡[‡[‡ÚUPUPUPÛN¿N¿N¿ÙH0H0H0ıA†A†A†ˆ;;;˜4Ä4Ä4į---˘'`'`'`˙ – – –˚@@@¸∞∞∞˝
  3189.  
  3190.  
  3191.  ˛êêê¿ÿlı¥
  3192. '…ˇ˜ïˇ˚ˇ∏ïˇ…ˇ˜ïˇ˚ˇ∏ïˇ…ˇÖˇÖˇ»…ˇÖˇÖˇ»…ˇÖˇÖˇ»…ˇÖˇÖˇ»…ˇÖˇÖˇ»…ˇÖˇÖˇ»…ˇÖˇÖˇ»…ˇÖˇÖˇ»…ˇÖˇÖˇ»…ˇÖˇÖˇ»…ˇÖˇÖˇ»…ˇÖˇÖˇ»…ˇÖˇÖˇ»…ˇÖˇÖˇ»…ˇÖˇÖˇ»˛ïˇÒîˇÒïˇ˝P˛kˇˇÒlˇˇÒkˇˇ˝S˛jˇ˝ˇÙkˇ˛ˇÛjˇ˝ˇS˛jˇ˝ˇÙkˇ˛ˇÛjˇ˝ˇS˛jˇˇˇˇˇˇˇˇˇˇ˝ˇÙkˇˇ˛ˇÛjˇ˝ˇN˛$ˇˇˇˇ˛ˇ ˇˇˇˇ˛ˇˇ˛ˇˇ˛ˇ˛ˇ"ˇˇˇˇ˝ˇÙˇ˚ˇˇˇ˛ˇˇˇˇˇˇˇ¸ˇ˛ˇ+ˇˇˇˇˇˇˇˇˇˇ˛ˇÛjˇ˝ˇS˛jˇˇˇˇ˛ˇˇ˛ˇ˛˛ˇˇˇˇˇˇˇˇˇ˛ˇ˝ˇÙkˇˇˇˇˇ˛ˇˇˇˇˇˇˇˇˇˇ˛ˇˇ˛ˇ˛ˇ˛˛˛ˇˇ˛ˇÛjˇ˝ˇò.@l@l
  3193. ¥MÙˇ¿Ùˇ¸Ùˇ‡Ùˇ¿Ùˇ¸Ùˇ‡Ùˇ¿Ùˇ¸Ùˇ‡Ùˇ¿Ùˇ¸Ùˇ‡Ùˇ¿Ùˇ¸Ùˇ‡Ùˇ¿Ùˇ¸Ùˇ‡Ùˇ¿Ùˇ¸Ùˇ‡Ùˇ¿Ùˇ¸Ùˇ‡Ùˇ¿Ùˇ¸Ùˇ‡Ùˇ¿Ùˇ¸Ùˇ‡Ùˇ¿Ùˇ¸Ùˇ‡Ùˇ¿Ùˇ¸Ùˇ‡Ùˇ¿Ùˇ¸Ùˇ‡Ùˇ¿Ùˇ¸Ùˇ‡Ùˇ¿Ùˇ¸Ùˇ‡Ùˇ¿Ùˇ¸Ùˇ‡Ùˇ¿Ùˇ¸Ùˇ‡Ùˇ¿Ùˇ¸Ùˇ‡Ùˇ¿ıˇ¸Ùˇ‡Ùˇ¿ıˇ¸Ùˇ‡
  3194. ˙Ä„ ˙
  3195. ˙Ä„ ˙
  3196. ˙Ä„ ˙
  3197. ˙Ä„ ˙
  3198. ˙Ä„ ˙
  3199. ˙Ä„ ˙
  3200. ˙Ä„ ˙
  3201. ˙Ä„ ˙
  3202. ˙Ä„ ˙
  3203. ˙Ä„ ˙
  3204. ˙Ä„ ˙
  3205. ˙Ä„ ˙
  3206. ˙Ä„ ˙
  3207. ˙Ä„ ˙ıˇ˛Ùˇıˇ˛Ùˇıˇ˛ÙˇÙˇ¿ÒÙˇ‡Ùˇ¿ÒÙˇ‡Ùˇ¿ÒÙˇ‡Ùˇ¿ÒÙˇ‡Ùˇ¿ÒÙˇ‡Ùˇ¿ÒÙˇ‡Ùˇ¿ÒÙˇ‡Ùˇ¿ÒÙˇ‡Ùˇ¿ÒÙˇ‡Ùˇ¿ÒÙˇ‡Ùˇ¿ÒÙˇ‡Ùˇ¿ÒÙˇ‡Ùˇ¿ÒÙˇ‡Ùˇ¿ÒÙˇ‡Ùˇ¿ÒÙˇ‡Ùˇ¿ÒÙˇ‡Ùˇ¿ÒÙˇ‡Ùˇ¿ÒÙˇ‡Ùˇ¿ÒÙˇ‡Ùˇ¿ÒÙˇ‡Ùˇ¿ÒÙˇ‡Ùˇ¿ÒÙˇ‡Ùˇ¿ÒÙˇ‡Ùˇ¿ÒÙˇ‡Ùˇ¿ÒÙˇ‡Ùˇ¿ÒÙˇ‡Ùˇ¿ÒÙˇ‡ò.@Äl@ÄlM¥çÙˇ¿ÒÙˇ‡Ùˇ¿ÒÙˇ‡Ùˇ¿ÒÙˇ‡Ùˇ¿ÒÙˇ‡Ùˇ¿ÒÙˇ‡Ùˇ¿ÒÙˇ‡Ùˇ¿ÒÙˇ‡Ùˇ¿ÒÙˇ‡Ùˇ¿ÒÙˇ‡Ùˇ¿ÒÙˇ‡Ùˇ¿ÒÙˇ‡Ùˇ¿ÒÙˇ‡Ùˇ¿ÒÙˇ‡Ùˇ¿ÒÙˇ‡Ùˇ¿ÒÙˇ‡Ùˇ¿ÒÙˇ‡Ùˇ¿ÒÙˇ‡Ùˇ¿ÒÙˇ‡Ùˇ¿ÒÙˇ‡Ùˇ¿ÒÙˇ‡Ùˇ¿ÒÙˇ‡Ùˇ¿ÒÙˇ‡Ùˇ¿ÒÙˇ‡Ùˇ¿ÒÙˇ‡Ùˇ¿ÒÙˇ‡Ùˇ¿ÒÙˇ‡Ùˇ¿ÒÙˇ‡Ùˇ¿ÒÙˇ‡Ùˇ¿ÒÙˇ‡Ùˇ¿ÒÙˇ‡Ùˇ¿ÒÙˇ‡Ùˇ¿ÒÙˇ‡Ùˇ¿ÒÙˇ‡Ùˇ¿ÒÙˇ‡Ùˇ¿ÒÙˇ‡Ùˇ¿ÒÙˇ‡Ùˇ¿ÒÙˇ‡Ùˇ¿ÒÙˇ‡Ùˇ¿ÒÙˇ‡Ùˇ¿ÒÙˇ‡Ùˇ¿ÒÙˇ‡Ùˇ¿ÒÙˇ‡Ùˇ¿ÒÙˇ‡Ùˇ¿ÒÙˇ‡Ùˇ¿ÒÙˇ‡Ùˇ¿ÒÙˇ‡Ùˇ¿ÒÙˇ‡Ùˇ¿ÒÙˇ‡Ùˇ¿ÒÙˇ‡Ùˇ¿ÒÙˇ‡Ùˇ¿ÒÙˇ‡Ùˇ¿ÒÙˇ‡Ùˇ¿ÒÙˇ‡Ùˇ¿ÒÙˇ‡Ùˇ¿ÒÙˇ‡Ùˇ¿ÒÙˇ‡Ùˇ¿ÒÙˇ‡Ùˇ¿ÒÙˇ‡Ùˇ¿ÒÙˇ‡Ùˇ¿ÒÙˇ‡Ùˇ¿ÒÙˇ‡Ùˇ¿ÒÙˇ‡Ùˇ¿ÒÙˇ‡Ùˇ¿ÒÙˇ‡ò.Ä¿lÄ¿lç¥ÕÙˇ¿ÒÙˇ‡Ùˇ¿ÒÙˇ‡Ùˇ¿ÒÙˇ‡Ùˇ¿ÒÙˇ‡Ùˇ¿ÒÙˇ‡”””””””””””””””””””””””””””””””””””””””””””””””””””””””””””ò.¿ÿl¿ÿlե””””””””””””””””””””””””òÅl@lHHQoh ©Ä˛ˇˇˇˇˇˇˇˇˇˇÃÃˇˇˇˇôôˇˇˇˇffˇˇˇˇ33ˇˇˇˇˇˇÃÃˇˇˇˇÃÃÃÃˇˇÃÃôô    ˇˇÃÃff
  3208. ˇˇÃÃ33 ˇˇÃà ˇˇôôˇˇ
  3209. ˇˇôôÃÃˇˇôôôôˇˇôôffˇˇôô33ˇˇôôˇˇffˇˇˇˇffÃÃˇˇffôôˇˇffffˇˇff33ˇˇffˇˇ33ˇˇˇˇ33ÃÃˇˇ33ôôˇˇ33ffˇˇ3333ˇˇ33ˇˇˇˇˇˇÃàˇˇôô!ˇˇff"ˇˇ33#ˇˇ$ÃÃˇˇˇˇ%ÃÃˇˇÃÃ&ÃÃˇˇôô'ÃÃˇˇff(ÃÃˇˇ33)ÃÃˇˇ*ÃÃÃÃˇˇ+ÃÃÃÃÃÃ,ÃÃÃÃôô-ÃÃÃÃff.ÃÃÃÃ33/ÃÃÃÃ0ÃÃôôˇˇ1ÃÃôôÃÃ2ÃÃôôôô3ÃÃôôff4ÃÃôô335ÃÃôô6ÃÃffˇˇ7ÃÃffÃÃ8ÃÃffôô9ÃÃffff:ÃÃff33;ÃÃff<ÃÃ33ˇˇ=ÃÃ33ÃÃ>ÃÃ33ôô?ÃÃ33ff@ÃÃ3333AÃÃ33BÃÃˇˇCÃÃÃÃDÃÃôôEÃÃffFÃÃ33GÃÃHôôˇˇˇˇIôôˇˇÃÃJôôˇˇôôKôôˇˇffLôôˇˇ33MôôˇˇNôôÃÃˇˇOôôÃÃÃÃPôôÃÃôôQôôÃÃffRôôÃÃ33SôôÃÃTôôôôˇˇUôôôôÃÃVôôôôôôWôôôôffXôôôô33YôôôôZôôffˇˇ[ôôffÃÃ\ôôffôô]ôôffff^ôôff33_ôôff`ôô33ˇˇaôô33ÃÃbôô33ôôcôô33ffdôô3333eôô33fôôˇˇgôôÃÃhôôôôiôôffjôô33kôôlffˇˇˇˇmffˇˇÃÃnffˇˇôôoffˇˇffpffˇˇ33qffˇˇrffÃÃˇˇsffÃÃÃÃtffÃÃôôuffÃÃffvffÃÃ33wffÃÃxffôôˇˇyffôôÃÃzffôôôô{ffôôff|ffôô33}ffôô~ffffˇˇffffÃÃÄffffôôÅffffffÇffff33ÉffffÑff33ˇˇÖff33ÃÃÜff33ôôáff33ffàff3333âff33äffˇˇãffÃÃåffôôçfffféff33èffê33ˇˇˇˇë33ˇˇÃÃí33ˇˇôôì33ˇˇffî33ˇˇ33ï33ˇˇñ33ÃÃˇˇó33ÃÃÃÃò33ÃÃôôô33ÃÃffö33ÃÃ33õ33ÃÃú33ôôˇˇù33ôôÃÃû33ôôôôü33ôôff†33ôô33°33ôô¢33ffˇˇ£33ffÃç33ffôô•33ffff¶33ff33ß33ff®3333ˇˇ©3333ÃÙ3333ôô´3333ff¨333333≠3333Æ33ˇˇØ33ÃÃ∞33ôô±33ff≤3333≥33¥ˇˇˇˇµˇˇÃÃ∂ˇˇôô∑ˇˇff∏ˇˇ33πˇˇ∫ÃÃˇˇªÃÃÃúÃÃôôΩÃÃffæÃÃ33øÃÿôôˇˇ¡ôôÃìôôôô√ôôffƒôô33≈ôôΔffˇˇ«ffÃûffôô…ffff ff33ÀffÃ33ˇˇÕ33ÃÃŒ33ôôœ33ff–3333—33“ˇˇ”ÃÑôô’ff÷33◊ÿˇˇˇŸ˘`˘`˘`⁄Ú–Ú–Ú–€Ï@Ï@Ï@‹Â∞Â∞Â∞›fl fl fl fiÿêÿêÿêfl“““‡ÀpÀpÀp·ƒ‡ƒ‡ƒ‡‚æPæPæP„∑¿∑¿∑¿‰±0±0±0™†™†™†Ê§§§ÁùÄùÄùÄËñññÈê`ê`ê`Íâ–â–â–ÎÉ@É@É@Ï|∞|∞|∞Ìv v v ÓoêoêoêÔiiibpbpbpÒ[‡[‡[‡ÚUPUPUPÛN¿N¿N¿ÙH0H0H0ıA†A†A†ˆ;;;˜4Ä4Ä4į---˘'`'`'`˙ – – –˚@@@¸∞∞∞˝
  3210.  
  3211.  
  3212.  ˛êêê@l
  3213. ¥M'L˛(ˇˇˇˇˇˇ¸ˇˇˇˇˇˇˇˇˇˇˇ¸ˇ˝ˇÙ%ˇˇˇˇˇˇˇˇˇ¸ˇˇˇˇˇˇˇˇˇˇ˝ˇ#ˇˇˇˇˇ˛ˇÛjˇ˝ˇS˛jˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ˝ˇÙkˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ˛ˇÛjˇ˝ˇS˛:ˇˇˇˇ˛ˇ˛ˇ˛ˇˇ˛ˇˇ˛ˇ,ˇ˛ˇˇ˛ˇ˛ˇˇ˝ˇÙˇ˛ˇˇˇ˛ˇIˇˇ˛ˇˇˇˇˇˇ˛ˇ˛ˇ˛ˇˇˇ˛ˇˇˇ˛ˇ˛ˇÛjˇˇ˛ˇ˛ˇˇ˝ˇQ˛jˇˇ˝ˇÙkˇˇˇ˛ˇÛ-ˇˇˇˇˇˇˇ˛ˇ˛ˇ¸ˇˇˇ˛ˇ!ˇˇ˝ˇS˛jˇˇˇ˝ˇÙkˇˇˇˇ˛ˇÛjˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ˝ˇS˛jˇ˝ˇÙkˇ˛ˇÛGˇˇ˛ˇˇˇ˛ˇˇˇˇˇˇˇˇ˛ˇˇ˛˛ˇ˝ˇS˛jˇˇˇˇˇˇˇˇˇ˝ˇÙkˇˇˇˇˇˇˇˇ˛ˇÛjˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ˝ˇI˛ˇˇˇˇˇ¸ˇ˛ˇˇˇ˛ˇˇˇ˛ˇˇˇˇ˛ˇ˛ˇ
  3214. ˇˇˇˇ¸ˇ˝ˇˇ˝ˇÙˇˇˇˇˇ¸ˇ˛ˇˇˇ˛ˇˇˇ˛ˇˇˇˇ˛ˇ˛ˇ
  3215. ˇˇˇˇ¸ˇˇˇˇˇˇˇ˛ˇÛˇ˛ˇˇˇ˛ˇˇˇ˛ˇ˝ˇ,ˇˇˇˇˇ˝ˇS˛jˇˇˇˇˇ˛ˇ˛ˇˇˇˇˇˇ˛ˇ˛ˇˇˇˇˇˇˇˇˇˇ˛ˇˇˇˇˇ˛˛˝ˇÙkˇˇˇˇˇˇˇˇˇ˛ˇˇˇ˛ˇˇˇˇ˛ˇ˛ˇ˛ˇ˛ˇ˛ˇˇˇˇˇˇˇˇˇ˛ˇÛjˇ˝ˇL˛)ˇˇˇˇˇˇˇˇˇˇˇˇˇ¸ˇˇˇˇˇˇˇˇˇ˝ˇ!ˇˇˇˇˇˇˇˇ˝ˇÙ(ˇˇˇˇˇˇˇˇˇˇˇˇˇ¸ˇˇˇˇˇˇˇˇ¸ˇ$ˇˇˇˇˇˇˇˇ˛ˇÛjˇ˝ˇS˛jˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ˝ˇÙkˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ˛ˇÛjˇ˝ˇS˛ˇˇˇˇˇˇ˛ˇ˛ˇJˇˇˇˇˇ˛ˇ˛˛˛ˇˇ˛ˇˇˇˇˇˇˇ˛ˇ˛ˇˇˇ˝ˇÙkˇˇˇˇˇˇˇˇˇ˛ˇˇˇ˛ˇˇˇˇˇˇˇˇˇˇ˛ˇ˛ˇˇˇˇˇˇˇˇˇˇ˛ˇÛjˇ˝ˇS˛jˇˇˇˇˇˇˇ˝ˇÙkˇˇˇˇˇˇ˛ˇÛjˇ˝ˇS˛jˇˇˇˇˇˇˇˇˇ˝ˇÙkˇˇˇˇˇˇˇ˛ˇÛjˇ˝ˇS˛jˇ˝ˇÙkˇ˛ˇÛjˇ˝ˇS˛jˇ˝ˇÙkˇ˛ˇÛjˇ˝ˇS˛jˇ˝ˇÙkˇ˛ˇÛjˇ˝ˇ˛íˇÙíˇÛíˇ¸îˇÚîˇÒîˇÚîˇÒîˇ …ˇÅàˇ» …ˇÅàˇ» …ˇÅàˇ» …ˇÅàˇ» …ˇÅàˇ» …ˇÅàˇ» …ˇÅàˇ» …ˇÅàˇ» …ˇÅàˇ» …ˇÅàˇ» …ˇÅàˇ» …ˇÅàˇ» …ˇÅàˇ» …ˇÅàˇ» ˛ïˇÅÙïˇ˝‚˛kˇˇÅÙkˇˇ˝‚˛kˇˇÅÙkˇˇ˝‰˛jˇ˝ˇÅ˜jˇ˝ˇ‰˛jˇ˝ˇÅ˜jˇ˝ˇ‰˛jˇ˝ˇÅ˜jˇ˝ˇ‰˛jˇ˝ˇÅ˜jˇ˝ˇ‰˛jˇ˝ˇÅ˜jˇ˝ˇ‰˛jˇ˝ˇÅ˜jˇ˝ˇ‰˛jˇ˝ˇÅ˜jˇ˝ˇ‰˛jˇ˝ˇÅ˜jˇ˝ˇ‰˛jˇ˝ˇÅ˜jˇ˝ˇ‰˛jˇ˝ˇÅ˜jˇ˝ˇ‰˛jˇ˝ˇÅ˜jˇ˝ˇ‰˛jˇ˝ˇÅ˜jˇ˝ˇ‰˛jˇ˝ˇÅ˜jˇ˝ˇ‰˛jˇ˝ˇÅ˜jˇ˝ˇ‡˛jˇ˝ˇÅ˜+ˇ˙ˇ7˝ˇ›˛jˇ˝ˇÅ˜+ˇˇˇˇˇˇˇ˜ˇ4˝ˇ·˛jˇ˝ˇÅ˜"ˇ¸ˇ    ˇˇ˝ˇ4˝ˇ‰˛jˇ˝ˇÅ˜jˇˇˇ˝ˇ„˛jˇ˝ˇÅ˜2ˇ˝ˇ3˝ˇ·˛8ˇ˚ˇ+˝ˇÅ˜jˇ˝ˇfl˛8ˇˇ˚+ˇ˝ˇÅ˜2ˇ¸ˇ2˝ˇfl˛7ˇˇ˘*ˇ˝ˇÅ˜3ˇˇ˛3ˇ˝ˇ‹˛&ˇ¯ˇˇ˝ˇˇ˝)ˇˇ˝ˇÅ˜3ˇˇ˛3ˇ˝ˇÃ˛%ˇÒˇÙ'ˇ˝ˇÅ˜3ˇˇ˛3ˇ˝ˇœ˛%ˇ¸ˇÙˇˆ&ˇ˝ˇÅ˜3ˇˇ˛3ˇ˝ˇŒ˛%ˇ¸ˇÙˇı%ˇ˝ˇÅ˜3ˇˇˇ˛3ˇˇ˝ˇÃ˛'ˇ˛ˇÙˇı%ˇ˝ˇÅ˜/ˇ˝ˇ˛˝ˇ/˝ˇòÅl@ÄlHHQod ™Ä˛ˇˇˇˇˇˇˇˇˇˇÃÃˇˇˇˇôôˇˇˇˇffˇˇˇˇ33ˇˇˇˇˇˇÃÃˇˇˇˇÃÃÃÃˇˇÃÃôô    ˇˇÃÃff
  3216. ˇˇÃÃ33 ˇˇÃà ˇˇôôˇˇ
  3217. ˇˇôôÃÃˇˇôôôôˇˇôôffˇˇôô33ˇˇôôˇˇffˇˇˇˇffÃÃˇˇffôôˇˇffffˇˇff33ˇˇffˇˇ33ˇˇˇˇ33ÃÃˇˇ33ôôˇˇ33ffˇˇ3333ˇˇ33ˇˇˇˇˇˇÃàˇˇôô!ˇˇff"ˇˇ33#ˇˇ$ÃÃˇˇˇˇ%ÃÃˇˇÃÃ&ÃÃˇˇôô'ÃÃˇˇff(ÃÃˇˇ33)ÃÃˇˇ*ÃÃÃÃˇˇ+ÃÃÃÃÃÃ,ÃÃÃÃôô-ÃÃÃÃff.ÃÃÃÃ33/ÃÃÃÃ0ÃÃôôˇˇ1ÃÃôôÃÃ2ÃÃôôôô3ÃÃôôff4ÃÃôô335ÃÃôô6ÃÃffˇˇ7ÃÃffÃÃ8ÃÃffôô9ÃÃffff:ÃÃff33;ÃÃff<ÃÃ33ˇˇ=ÃÃ33ÃÃ>ÃÃ33ôô?ÃÃ33ff@ÃÃ3333AÃÃ33BÃÃˇˇCÃÃÃÃDÃÃôôEÃÃffFÃÃ33GÃÃHôôˇˇˇˇIôôˇˇÃÃJôôˇˇôôKôôˇˇffLôôˇˇ33MôôˇˇNôôÃÃˇˇOôôÃÃÃÃPôôÃÃôôQôôÃÃffRôôÃÃ33SôôÃÃTôôôôˇˇUôôôôÃÃVôôôôôôWôôôôffXôôôô33YôôôôZôôffˇˇ[ôôffÃÃ\ôôffôô]ôôffff^ôôff33_ôôff`ôô33ˇˇaôô33ÃÃbôô33ôôcôô33ffdôô3333eôô33fôôˇˇgôôÃÃhôôôôiôôffjôô33kôôlffˇˇˇˇmffˇˇÃÃnffˇˇôôoffˇˇffpffˇˇ33qffˇˇrffÃÃˇˇsffÃÃÃÃtffÃÃôôuffÃÃffvffÃÃ33wffÃÃxffôôˇˇyffôôÃÃzffôôôô{ffôôff|ffôô33}ffôô~ffffˇˇffffÃÃÄffffôôÅffffffÇffff33ÉffffÑff33ˇˇÖff33ÃÃÜff33ôôáff33ffàff3333âff33äffˇˇãffÃÃåffôôçfffféff33èffê33ˇˇˇˇë33ˇˇÃÃí33ˇˇôôì33ˇˇffî33ˇˇ33ï33ˇˇñ33ÃÃˇˇó33ÃÃÃÃò33ÃÃôôô33ÃÃffö33ÃÃ33õ33ÃÃú33ôôˇˇù33ôôÃÃû33ôôôôü33ôôff†33ôô33°33ôô¢33ffˇˇ£33ffÃç33ffôô•33ffff¶33ff33ß33ff®3333ˇˇ©3333ÃÙ3333ôô´3333ff¨333333≠3333Æ33ˇˇØ33ÃÃ∞33ôô±33ff≤3333≥33¥ˇˇˇˇµˇˇÃÃ∂ˇˇôô∑ˇˇff∏ˇˇ33πˇˇ∫ÃÃˇˇªÃÃÃúÃÃôôΩÃÃffæÃÃ33øÃÿôôˇˇ¡ôôÃìôôôô√ôôffƒôô33≈ôôΔffˇˇ«ffÃûffôô…ffff ff33ÀffÃ33ˇˇÕ33ÃÃŒ33ôôœ33ff–3333—33“ˇˇ”ÃÑôô’ff÷33◊ÿˇˇˇŸ˘`˘`˘`⁄Ú–Ú–Ú–€Ï@Ï@Ï@‹Â∞Â∞Â∞›fl fl fl fiÿêÿêÿêfl“““‡ÀpÀpÀp·ƒ‡ƒ‡ƒ‡‚æPæPæP„∑¿∑¿∑¿‰±0±0±0™†™†™†Ê§§§ÁùÄùÄùÄËñññÈê`ê`ê`Íâ–â–â–ÎÉ@É@É@Ï|∞|∞|∞Ìv v v ÓoêoêoêÔiiibpbpbpÒ[‡[‡[‡ÚUPUPUPÛN¿N¿N¿ÙH0H0H0ıA†A†A†ˆ;;;˜4Ä4Ä4į---˘'`'`'`˙ – – –˚@@@¸∞∞∞˝
  3218.  
  3219.  
  3220.  ˛êêê@ÄlM¥ç'—˛*ˇˇÙˇı%ˇ˝ˇÅ˜-ˇ˛ˇˇ˛ˇ˛ˇ-˝ˇœ˛*ˇˇÙˇı%ˇ˝ˇÅ˜.ˇˇˇ˝ˇˇˇ˝.ˇ˝ˇÀ˛)ˇ˙ˇ˙ˇı%ˇ˝ˇÅ˜-ˇˇ¸˝ˇ¸.ˇˇ˝ˇÃ˛0ˇˇˇ˚ˇˇı%ˇ˝ˇÅ˜-ˇˇˇÚ-ˇˇ˝ˇ¡˛$ˇ˝ˇ˝ˇÏ%ˇ˝ˇÅ˜,ˇˇˇ,ˇˇ˝ˇƒ˛'ˇˇ˝ˇ˝˙ˇˇˇˆ%ˇ˝ˇÅ˜+ˇˇˇÓ+ˇ˝ˇø˛'ˇˇ˝ˇ˛ıˇ˜%ˇ˝ˇÅ˜*ˇˇÌ+ˇ˝ˇ√˛'ˇˇ˝ˇ˝˝ˇˇˇÛ%ˇ˝ˇÅ˜*ˇˇÌ+ˇ˝ˇ ˛'ˇˇ˝ˇ˝ˇˇ˛ˇ˛ˇ¯ˇ%˝ˇÅ˜*ˇˇÌ+ˇ˝ˇœ˛'ˇˇ˝ˇ˝ˇˇ˛ˇˇˇ˘ˇ&˝ˇÅ˜*ˇˇ¯˛ˇ˘+ˇ˝ˇ√˛'ˇˇ˝ˇÒ˙ˇ'˝ˇÅ˜*ˇˇ¯˛ˇ˘+ˇ˝ˇ≈˛'ˇˇ˝ˇÌˇ(˝ˇÅ˜*ˇˇ¯˛ˇ˘+ˇ˝ˇ«˛$ˇ˝ˇÌˇ)˝ˇÅ˜+ˇˇˇ˘ˇˇ¯+ˇ˝ˇŒ˛/ˇÒˇ*˝ˇÅ˜,ˇˇˇ˙ˇˇ˘,ˇˇ˝ˇ€˛jˇ˝ˇÅ˜,ˇˇ˙ˇˇ˘,ˇ˝ˇ›˛jˇ˝ˇÅ˜-ˇˇˇ˚ˇˇ˙-ˇˇ˝ˇfl˛jˇ˝ˇÅ˜.ˇˇˇ¸ˇˇ˚.ˇˇ˝ˇ‹˛jˇ˝ˇÅ˜-ˇ˛ˇ˜/ˇˇ˝ˇfl˛jˇ˝ˇÅ˜/ˇ˛ˇ˚˛ˇ.˝ˇfl˛jˇ˝ˇÅ˜1ˇ˘ˇ0˝ˇ‰˛jˇ˝ˇÅ˜jˇ˝ˇ‰˛jˇ˝ˇÅ˜jˇ˝ˇ‰˛jˇ˝ˇÅ˜jˇ˝ˇ‰˛jˇ˝ˇÅ˜jˇ˝ˇ‰˛jˇ˝ˇÅ˜jˇ˝ˇ‰˛jˇ˝ˇÅ˜jˇ˝ˇ‰˛jˇ˝ˇÅ˜jˇ˝ˇ‰˛jˇ˝ˇÅ˜jˇ˝ˇ‰˛jˇ˝ˇÅ˜jˇ˝ˇ‰˛jˇ˝ˇÅ˜jˇ˝ˇ‰˛jˇ˝ˇÅ˜jˇ˝ˇ‰˛jˇ˝ˇÅ˜jˇ˝ˇ‰˛jˇ˝ˇÅ˜jˇ˝ˇ‰˛jˇ˝ˇÅ˜ˇ˛ˇMˇˇˇˇˇˇˇ˝ˇ‰˛jˇˇˇˇˇ˛ˇˇˇ˛˝ˇÅ˜9ˇ˛˛ˇˇˇ˛ˇˇ˛˛ˇˇˇˇ˛ˇ˛ˇ˛ˇˇ˛ˇˇ˛ˇ˛ˇˇ˛ˇ˝ˇ‚˛"ˇˇˇ˛ˇ ˇˇˇˇ˝ˇ˝ˇ˛ˇ˛ˇˇ˛ˇ˛ˇ˝ˇÅ˜jˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ˝ˇ‰˛jˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ˝ˇÅ˜ˇ˛ˇKˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ˝ˇ‰˛$ˇˇˇ˛ˇ˛ˇB˛ˇˇˇˇˇˇ˛ˇ˛ˇ˛ˇˇ˛ˇ˛ˇ˝ˇÅ˜jˇˇˇˇˇ˛ˇ˛ˇˇ˛ˇˇ˛ˇˇˇˇˇ˛˛ˇ˛ˇˇ˝ˇ„˛jˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ˝ˇÅ˜ˇ˛ˇˇˇ˛ˇˇˇ˛ˇ˛ˇˇ˝ˇˇˇ˛ˇˇˇˇ˛ˇ˝ˇ‚˛"ˇˇˇ˛ˇ ˇˇˇˇ˝ˇ˝ˇˇˇ˛ˇˇˇˇ˛ˇ˝ˇÅ˜jˇˇˇ˝ˇ‰˛jˇˇˇ˝ˇÅ˜jˇˇˇˇˇ˝ˇ‰˛jˇˇˇˇˇ˝ˇÅ˜jˇ˝ˇ‰˛jˇ˝ˇÅ˜jˇ˝ˇ‰˛jˇ˝ˇÅ˜jˇˇ˛˝ˇ‰˛jˇˇˇ˝ˇÅ˜$ˇ˛ˇˇˇˇˇ˛ˇˇˇ˛ˇ-ˇˇˇˇ˝ˇ‰˛$ˇ˛ˇ    ˇˇˇˇ˛ˇ5ˇˇˇˇˇˇˇˇˇ˝ˇÅ˜*ˇˇˇ˛ˇ<ˇˇˇˇˇˇˇˇˇˇ˝ˇ‰˛jˇˇˇˇˇ˛ˇˇ˛ˇ˛ˇ˛ˇ˛ˇ˝ˇÅ˜Aˇ˛ˇ˛ˇˇ˛ˇˇˇˇˇˇ˛ˇ˛˛ˇ%˝ˇ„˛9ˇˇˇˇˇˇˇˇˇˇˇ˛ˇˇˇ˝ˇ$˝ˇÅ˜jˇˇˇˇˇˇˇˇˇˇˇˇˇˇ˝ˇ„˛jˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ˝ˇÅ˜)ˇˇˇ˝ˇ˛ˇˇˇ˛ˇ,ˇˇˇ˝ˇ‰˛<ˇˇˇˇ˛ˇˇˇˇ˛ˇˇ˛˛ˇ*ˇ˛˝ˇÅ˜jˇ˝ˇ‰˛jˇ˝ˇÅ˜jˇ˝ˇ‰˛jˇ˝ˇÅ˜jˇ˝ˇ‰˛jˇ˝ˇÅ˜jˇ˝ˇ‰˛jˇ˝ˇÅ˜jˇ˝ˇ‰˛jˇ˝ˇÅ˜jˇ˝ˇ‰˛jˇ˝ˇÅ˜jˇ˝ˇ‰˛jˇ˝ˇÅ˜jˇ˝ˇ‰˛jˇ˝ˇÅ˜jˇ˝ˇ‰˛jˇ˝ˇÅ˜jˇ˝ˇ‰˛jˇ˝ˇÅ˜jˇ˝ˇ‰˛jˇ˝ˇÅ˜jˇ˝ˇ‰˛jˇ˝ˇÅ˜jˇ˝ˇ‰˛jˇ˝ˇÅ˜jˇ˝ˇ‰˛jˇ˝ˇÅ˜jˇ˝ˇòÅlÄ¿lHHQoh ´Ä˛ˇˇˇˇˇˇˇˇˇˇÃÃˇˇˇˇôôˇˇˇˇffˇˇˇˇ33ˇˇˇˇˇˇÃÃˇˇˇˇÃÃÃÃˇˇÃÃôô    ˇˇÃÃff
  3221. ˇˇÃÃ33 ˇˇÃà ˇˇôôˇˇ
  3222. ˇˇôôÃÃˇˇôôôôˇˇôôffˇˇôô33ˇˇôôˇˇffˇˇˇˇffÃÃˇˇffôôˇˇffffˇˇff33ˇˇffˇˇ33ˇˇˇˇ33ÃÃˇˇ33ôôˇˇ33ffˇˇ3333ˇˇ33ˇˇˇˇˇˇÃàˇˇôô!ˇˇff"ˇˇ33#ˇˇ$ÃÃˇˇˇˇ%ÃÃˇˇÃÃ&ÃÃˇˇôô'ÃÃˇˇff(ÃÃˇˇ33)ÃÃˇˇ*ÃÃÃÃˇˇ+ÃÃÃÃÃÃ,ÃÃÃÃôô-ÃÃÃÃff.ÃÃÃÃ33/ÃÃÃÃ0ÃÃôôˇˇ1ÃÃôôÃÃ2ÃÃôôôô3ÃÃôôff4ÃÃôô335ÃÃôô6ÃÃffˇˇ7ÃÃffÃÃ8ÃÃffôô9ÃÃffff:ÃÃff33;ÃÃff<ÃÃ33ˇˇ=ÃÃ33ÃÃ>ÃÃ33ôô?ÃÃ33ff@ÃÃ3333AÃÃ33BÃÃˇˇCÃÃÃÃDÃÃôôEÃÃffFÃÃ33GÃÃHôôˇˇˇˇIôôˇˇÃÃJôôˇˇôôKôôˇˇffLôôˇˇ33MôôˇˇNôôÃÃˇˇOôôÃÃÃÃPôôÃÃôôQôôÃÃffRôôÃÃ33SôôÃÃTôôôôˇˇUôôôôÃÃVôôôôôôWôôôôffXôôôô33YôôôôZôôffˇˇ[ôôffÃÃ\ôôffôô]ôôffff^ôôff33_ôôff`ôô33ˇˇaôô33ÃÃbôô33ôôcôô33ffdôô3333eôô33fôôˇˇgôôÃÃhôôôôiôôffjôô33kôôlffˇˇˇˇmffˇˇÃÃnffˇˇôôoffˇˇffpffˇˇ33qffˇˇrffÃÃˇˇsffÃÃÃÃtffÃÃôôuffÃÃffvffÃÃ33wffÃÃxffôôˇˇyffôôÃÃzffôôôô{ffôôff|ffôô33}ffôô~ffffˇˇffffÃÃÄffffôôÅffffffÇffff33ÉffffÑff33ˇˇÖff33ÃÃÜff33ôôáff33ffàff3333âff33äffˇˇãffÃÃåffôôçfffféff33èffê33ˇˇˇˇë33ˇˇÃÃí33ˇˇôôì33ˇˇffî33ˇˇ33ï33ˇˇñ33ÃÃˇˇó33ÃÃÃÃò33ÃÃôôô33ÃÃffö33ÃÃ33õ33ÃÃú33ôôˇˇù33ôôÃÃû33ôôôôü33ôôff†33ôô33°33ôô¢33ffˇˇ£33ffÃç33ffôô•33ffff¶33ff33ß33ff®3333ˇˇ©3333ÃÙ3333ôô´3333ff¨333333≠3333Æ33ˇˇØ33ÃÃ∞33ôô±33ff≤3333≥33¥ˇˇˇˇµˇˇÃÃ∂ˇˇôô∑ˇˇff∏ˇˇ33πˇˇ∫ÃÃˇˇªÃÃÃúÃÃôôΩÃÃffæÃÃ33øÃÿôôˇˇ¡ôôÃìôôôô√ôôffƒôô33≈ôôΔffˇˇ«ffÃûffôô…ffff ff33ÀffÃ33ˇˇÕ33ÃÃŒ33ôôœ33ff–3333—33“ˇˇ”ÃÑôô’ff÷33◊ÿˇˇˇŸ˘`˘`˘`⁄Ú–Ú–Ú–€Ï@Ï@Ï@‹Â∞Â∞Â∞›fl fl fl fiÿêÿêÿêfl“““‡ÀpÀpÀp·ƒ‡ƒ‡ƒ‡‚æPæPæP„∑¿∑¿∑¿‰±0±0±0™†™†™†Ê§§§ÁùÄùÄùÄËñññÈê`ê`ê`Íâ–â–â–ÎÉ@É@É@Ï|∞|∞|∞Ìv v v ÓoêoêoêÔiiibpbpbpÒ[‡[‡[‡ÚUPUPUPÛN¿N¿N¿ÙH0H0H0ıA†A†A†ˆ;;;˜4Ä4Ä4į---˘'`'`'`˙ – – –˚@@@¸∞∞∞˝
  3223.  
  3224.  
  3225.  ˛êêêÄ¿lç¥Õ'‰˛jˇ˝ˇÅ˜jˇ˝ˇ‰˛jˇ˝ˇÅ˜jˇ˝ˇ ˛íˇÅ˜íˇ ¸îˇÅıîˇ ¸îˇÅıîˇÅÅïÅÅïÅÅïÅÅïÅÅïÅÅïÅÅïÅÅïÅÅïÅÅïÅÅïÅÅïÅÅïÅÅïÅÅïÅÅïÅÅïÅÅïÅÅïÅÅïÅÅïÅÅïÅÅïÅÅïÅÅïÅÅïÅÅïÅÅïÅÅïÅÅïÅÅïÅÅïÅÅïÅÅïÅÅïÅÅïÅÅïÅÅïÅÅïÅÅïÅÅïÅÅïÅÅïÅÅïÅÅïÅÅïÅÅïÅÅïÅÅïÅÅïÅÅïÅÅïÅÅïÅÅïÅÅïÅÅïÅÅïÅÅïÅÅïòÅl¿ÿlHHQod ¨Ä˛ˇˇˇˇˇˇˇˇˇˇÃÃˇˇˇˇôôˇˇˇˇffˇˇˇˇ33ˇˇˇˇˇˇÃÃˇˇˇˇÃÃÃÃˇˇÃÃôô    ˇˇÃÃff
  3226. ˇˇÃÃ33 ˇˇÃà ˇˇôôˇˇ
  3227. ˇˇôôÃÃˇˇôôôôˇˇôôffˇˇôô33ˇˇôôˇˇffˇˇˇˇffÃÃˇˇffôôˇˇffffˇˇff33ˇˇffˇˇ33ˇˇˇˇ33ÃÃˇˇ33ôôˇˇ33ffˇˇ3333ˇˇ33ˇˇˇˇˇˇÃàˇˇôô!ˇˇff"ˇˇ33#ˇˇ$ÃÃˇˇˇˇ%ÃÃˇˇÃÃ&ÃÃˇˇôô'ÃÃˇˇff(ÃÃˇˇ33)ÃÃˇˇ*ÃÃÃÃˇˇ+ÃÃÃÃÃÃ,ÃÃÃÃôô-ÃÃÃÃff.ÃÃÃÃ33/ÃÃÃÃ0ÃÃôôˇˇ1ÃÃôôÃÃ2ÃÃôôôô3ÃÃôôff4ÃÃôô335ÃÃôô6ÃÃffˇˇ7ÃÃffÃÃ8ÃÃffôô9ÃÃffff:ÃÃff33;ÃÃff<ÃÃ33ˇˇ=ÃÃ33ÃÃ>ÃÃ33ôô?ÃÃ33ff@ÃÃ3333AÃÃ33BÃÃˇˇCÃÃÃÃDÃÃôôEÃÃffFÃÃ33GÃÃHôôˇˇˇˇIôôˇˇÃÃJôôˇˇôôKôôˇˇffLôôˇˇ33MôôˇˇNôôÃÃˇˇOôôÃÃÃÃPôôÃÃôôQôôÃÃffRôôÃÃ33SôôÃÃTôôôôˇˇUôôôôÃÃVôôôôôôWôôôôffXôôôô33YôôôôZôôffˇˇ[ôôffÃÃ\ôôffôô]ôôffff^ôôff33_ôôff`ôô33ˇˇaôô33ÃÃbôô33ôôcôô33ffdôô3333eôô33fôôˇˇgôôÃÃhôôôôiôôffjôô33kôôlffˇˇˇˇmffˇˇÃÃnffˇˇôôoffˇˇffpffˇˇ33qffˇˇrffÃÃˇˇsffÃÃÃÃtffÃÃôôuffÃÃffvffÃÃ33wffÃÃxffôôˇˇyffôôÃÃzffôôôô{ffôôff|ffôô33}ffôô~ffffˇˇffffÃÃÄffffôôÅffffffÇffff33ÉffffÑff33ˇˇÖff33ÃÃÜff33ôôáff33ffàff3333âff33äffˇˇãffÃÃåffôôçfffféff33èffê33ˇˇˇˇë33ˇˇÃÃí33ˇˇôôì33ˇˇffî33ˇˇ33ï33ˇˇñ33ÃÃˇˇó33ÃÃÃÃò33ÃÃôôô33ÃÃffö33ÃÃ33õ33ÃÃú33ôôˇˇù33ôôÃÃû33ôôôôü33ôôff†33ôô33°33ôô¢33ffˇˇ£33ffÃç33ffôô•33ffff¶33ff33ß33ff®3333ˇˇ©3333ÃÙ3333ôô´3333ff¨333333≠3333Æ33ˇˇØ33ÃÃ∞33ôô±33ff≤3333≥33¥ˇˇˇˇµˇˇÃÃ∂ˇˇôô∑ˇˇff∏ˇˇ33πˇˇ∫ÃÃˇˇªÃÃÃúÃÃôôΩÃÃffæÃÃ33øÃÿôôˇˇ¡ôôÃìôôôô√ôôffƒôô33≈ôôΔffˇˇ«ffÃûffôô…ffff ff33ÀffÃ33ˇˇÕ33ÃÃŒ33ôôœ33ff–3333—33“ˇˇ”ÃÑôô’ff÷33◊ÿˇˇˇŸ˘`˘`˘`⁄Ú–Ú–Ú–€Ï@Ï@Ï@‹Â∞Â∞Â∞›fl fl fl fiÿêÿêÿêfl“““‡ÀpÀpÀp·ƒ‡ƒ‡ƒ‡‚æPæPæP„∑¿∑¿∑¿‰±0±0±0™†™†™†Ê§§§ÁùÄùÄùÄËñññÈê`ê`ê`Íâ–â–â–ÎÉ@É@É@Ï|∞|∞|∞Ìv v v ÓoêoêoêÔiiibpbpbpÒ[‡[‡[‡ÚUPUPUPÛN¿N¿N¿ÙH0H0H0ıA†A†A†ˆ;;;˜4Ä4Ä4į---˘'`'`'`˙ – – –˚@@@¸∞∞∞˝
  3228.  
  3229.  
  3230.  ˛êêê¿ÿlÕ¥Â'ÅÅïÅÅïÅÅïÅÅïÅÅïÅÅïÅÅïÅÅïÅÅïÅÅïÅÅïÅÅïÅÅïÅÅïÅÅïÅÅïÅÅïÅÅïÅÅïÅÅïÅÅïÅÅïÅÅïÅÅï†è†É†ø
  3231. d,     Helvetica
  3232.     .°dONLNdàñìæ(Ø¥Figure 1°dONLNd    îñüT* ,Using Components as Software Building Blocks, Palatino
  3233. °dONLNd6±ñΩÊ*ITo demonstrate the all-around usefulness of components, we’ll examine the°dONLNdÄΩñ…˙* Kdevelopment and implementation of a component that does some rather trivial°dONLNdÃ…ñ’* Rmathematical calculations. This example will help us focus on concepts rather than°dONLNd’ñ·* Vgetting lost in the details of solving a complex problem. We’ll build a fairly generic°dONLNdv·ñÌ* Pcomponent template that you can use in your own designs. We’ll also discuss some°dONLNd«Ìñ˘ * Qadvanced component features, such as extending component functionality, capturing°dONLNd˘ñˆ* Lcomponents, and delegating component functions. Finally, we’ll show you some°dONLNdfñ’* Etechniques and tools for debugging your components. The accompanying °dONLNd´’(-Û    Developer°dONLNdµñ√(9¥    CD Series°dONLNdæ√)-H disc contains our example component’s source code, a simple application°dONLNdñ)e(E¥/to test our component, and the debugging tools. xBx/,Times
  3234. ({/ 
  3235. +
  3236. 8
  3237. +QuickTime compatibility with Movie Recorder*
  3238. (translation: watching )JStar Trek: The Next Generation(£¥4episodes on his Macintosh). Occasionally he ventures*
  3239. ;out for a bit of mountain biking or flying. This article is*
  3240. their latest joint venture.)P•
  3241. (ÚDd)e)v)e)l)o)p)  
  3242. )
  3243. December 1992ˇ†æ°¿9pse
  3244. currentpoint
  3245. /picTop exch def
  3246. /picLeft exch def
  3247. psb
  3248. †ø†æ°¿=pse
  3249. currentpoint
  3250. /picBottom exch def
  3251. /picRight exch def
  3252. psb
  3253. †ø†æ°¿[ -20.5 -0.5 343.5 349.5]
  3254. °¿€1 dict begin /s exch def
  3255. picLeft picTop translate
  3256. picRight picLeft sub s 2 get s 0 get sub div
  3257. picBottom picTop sub s 1 get s 3 get sub div
  3258. scale
  3259. s 0 get neg s 3 get neg translate
  3260. end
  3261. /showpage {} def
  3262. /copypage {} def
  3263. °¿ %!PS-Adobe-3.0 EPSF-3.0
  3264. %%Creator: Adobe Illustrator(TM) 3.2
  3265. %%For: (Diane Wilcox) (Apple Computer, Inc.)
  3266. %%Title: (Woodcock Fig_01MSW)
  3267. %%CreationDate: (10/2/92) (1:20 PM)
  3268. %%BoundingBox: -20.5 -0.5 343.5 349.5
  3269. %%DocumentProcessColors: Magenta Black
  3270. %%DocumentFonts: Helvetica
  3271. %%DocumentSuppliedResources: procset Adobe_packedarray 2.0 0
  3272. %%+ procset Adobe_cmykcolor 1.1 0
  3273. %%+ procset Adobe_cshow 1.1 0
  3274. %%+ procset Adobe_customcolor 1.0 0
  3275. %%+ procset Adobe_typography_AI3 1.0 1
  3276. %%+ procset Adobe_IllustratorA_AI3 1.0 1
  3277. %AI3_ColorUsage: Color
  3278. %AI3_TemplateBox: 156.5 99.5 156.5 99.5
  3279. %AI3_TileBox: -119.5 -265.5 432.5 464.5
  3280. %AI3_DocumentPreview: Macintosh_ColorPic
  3281. %%EndComments
  3282. %%BeginProlog
  3283. %%BeginResource: procset Adobe_packedarray 2.0 0
  3284. %%Title: (Packed Array Operators)
  3285. %%Version: 2.0 
  3286. %%CreationDate: (8/2/90) ()
  3287. %%Copyright: ((C) 1987-1990 Adobe Systems Incorporated All Rights Reserved)
  3288. userdict /Adobe_packedarray 5 dict dup begin put
  3289. /initialize            % - initialize -
  3290. {
  3291. /packedarray where
  3292.     {
  3293.     pop
  3294.     }
  3295.     {
  3296.     Adobe_packedarray begin
  3297.     Adobe_packedarray
  3298.         {
  3299.         dup xcheck
  3300.             {
  3301.             bind
  3302.             } if
  3303.         userdict 3 1 roll put
  3304.         } forall
  3305.     end
  3306.     } ifelse
  3307. } def
  3308. /terminate            % - terminate -
  3309. {
  3310. } def
  3311. /packedarray        % arguments count packedarray array
  3312. {
  3313. array astore readonly
  3314. } def
  3315. /setpacking            % boolean setpacking -
  3316. {
  3317. pop
  3318. } def
  3319. /currentpacking        % - setpacking boolean
  3320. {
  3321. false
  3322. } def
  3323. currentdict readonly pop end
  3324. %%EndResource
  3325. Adobe_packedarray /initialize get exec
  3326. %%BeginResource: procset Adobe_cmykcolor 1.1 0
  3327. %%Title: (CMYK Color Operators)
  3328. %%Version: 1.1 
  3329. %%CreationDate: (1/23/89) ()
  3330. %%Copyright: ((C) 1987-1990 Adobe Systems Incorporated All Rights Reserved)
  3331. currentpacking true setpacking
  3332. userdict /Adobe_cmykcolor 4 dict dup begin put
  3333. /initialize            % - initialize -
  3334. {
  3335. /setcmykcolor where
  3336.     {
  3337.     pop
  3338.     }
  3339.     {
  3340.     userdict /Adobe_cmykcolor_vars 2 dict dup begin put
  3341.     /_setrgbcolor
  3342.         /setrgbcolor load def
  3343.     /_currentrgbcolor
  3344.         /currentrgbcolor load def
  3345.     Adobe_cmykcolor begin
  3346.     Adobe_cmykcolor
  3347.         {
  3348.         dup xcheck
  3349.             {
  3350.             bind
  3351.             } if
  3352.         pop pop
  3353.         } forall
  3354.     end
  3355.     end
  3356.     Adobe_cmykcolor begin
  3357.     } ifelse
  3358. } def
  3359. /terminate            % - terminate -
  3360. {
  3361. currentdict Adobe_cmykcolor eq
  3362.     {
  3363.     end
  3364.     } if
  3365. } def
  3366. /setcmykcolor        % cyan magenta yellow black setcmykcolor -
  3367. {
  3368. 1 sub 4 1 roll
  3369. 3
  3370.     {
  3371.     3 index add neg dup 0 lt
  3372.         {
  3373.         pop 0
  3374.         } if
  3375.     3 1 roll
  3376.     } repeat
  3377. Adobe_cmykcolor_vars /_setrgbcolor get exec
  3378. pop
  3379. } def 
  3380. /currentcmykcolor    % - currentcmykcolor cyan magenta yellow black
  3381. {
  3382. Adobe_cmykcolor_vars /_currentrgbcolor get exec
  3383. 3
  3384.     {
  3385.     1 sub neg 3 1 roll
  3386.     } repeat
  3387. 0
  3388. } def
  3389. currentdict readonly pop end
  3390. setpacking
  3391. %%EndResource
  3392. %%BeginResource: procset Adobe_cshow 1.1 0
  3393. %%Title: (cshow Operator)
  3394. %%Version: 1.1 
  3395. %%CreationDate: (1/23/89) ()
  3396. %%Copyright: ((C) 1987-1990 Adobe Systems Incorporated All Rights Reserved)
  3397. currentpacking true setpacking
  3398. userdict /Adobe_cshow 3 dict dup begin put
  3399. /initialize            % - initialize -
  3400. {
  3401. /cshow where
  3402.     {
  3403.     pop
  3404.     }
  3405.     {
  3406.     userdict /Adobe_cshow_vars 1 dict dup begin put
  3407.     /_cshow        % - _cshow proc
  3408.         {} def
  3409.     Adobe_cshow begin
  3410.     Adobe_cshow
  3411.         {
  3412.         dup xcheck
  3413.             {
  3414.             bind
  3415.             } if
  3416.         userdict 3 1 roll put
  3417.         } forall
  3418.     end
  3419.     end
  3420.     } ifelse
  3421. } def
  3422. /terminate            % - terminate -
  3423. {
  3424. } def
  3425. /cshow                % proc string cshow -
  3426. {
  3427. exch
  3428. Adobe_cshow_vars
  3429.     exch /_cshow
  3430.     exch put
  3431.     {
  3432.     0 0 Adobe_cshow_vars /_cshow get exec
  3433.     } forall
  3434. } def
  3435. currentdict readonly pop end
  3436. setpacking
  3437. %%EndResource
  3438. %%BeginResource: procset Adobe_customcolor 1.0 0
  3439. %%Title: (Custom Color Operators)
  3440. %%Version: 1.0 
  3441. %%CreationDate: (5/9/88) ()
  3442. %%Copyright: ((C) 1987-1990 Adobe Systems Incorporated All Rights Reserved)
  3443. currentpacking true setpacking
  3444. userdict /Adobe_customcolor 5 dict dup begin put
  3445. /initialize            % - initialize -
  3446. {
  3447. /setcustomcolor where
  3448.     {
  3449.     pop
  3450.     }
  3451.     {
  3452.     Adobe_customcolor begin
  3453.     Adobe_customcolor
  3454.         {
  3455.         dup xcheck
  3456.             {
  3457.             bind
  3458.             } if
  3459.         pop pop
  3460.         } forall
  3461.     end
  3462.     Adobe_customcolor begin
  3463.     } ifelse
  3464. } def
  3465. /terminate            % - terminate -
  3466. {
  3467. currentdict Adobe_customcolor eq
  3468.     {
  3469.     end
  3470.     } if
  3471. } def
  3472. /findcmykcustomcolor    % cyan magenta yellow black name findcmykcustomcolor object
  3473. {
  3474. 5 packedarray
  3475. }  def
  3476. /setcustomcolor        % object tint setcustomcolor -
  3477. {
  3478. exch
  3479. aload pop pop
  3480. 4
  3481.     {
  3482.     4 index mul 4 1 roll
  3483.     } repeat
  3484. 5 -1 roll pop
  3485. setcmykcolor
  3486. } def
  3487. /setoverprint        % boolean setoverprint -
  3488. {
  3489. pop
  3490. } def
  3491. currentdict readonly pop end
  3492. setpacking
  3493. %%EndResource
  3494. %%BeginResource: procset Adobe_typography_AI3 1.1 0
  3495. %%Title: (Typography Operators)
  3496. %%Version: 1.0 
  3497. %%CreationDate:(5/31/90) ()
  3498. %%Copyright: ((C) 1987-1990 Adobe Systems Incorporated All Rights Reserved)
  3499. currentpacking true setpacking
  3500. userdict /Adobe_typography_AI3 47 dict dup begin put
  3501. /initialize            % - initialize -
  3502. {
  3503. /TZ
  3504.  where
  3505.     {
  3506.     pop
  3507.     }
  3508.     {
  3509.     Adobe_typography_AI3 begin
  3510.     Adobe_typography_AI3
  3511.         {
  3512.         dup xcheck
  3513.             {
  3514.             bind
  3515.             } if
  3516.         pop pop
  3517.         } forall
  3518.     end
  3519.     Adobe_typography_AI3 begin
  3520.     } ifelse
  3521. } def
  3522. /terminate            % - terminate -
  3523. {
  3524. currentdict Adobe_typography_AI3 eq
  3525.     {
  3526.     end
  3527.     } if
  3528. } def
  3529. % [ number value stream [ array for encoding modification ] modifyEncoding ==> [ modified array ]
  3530. /modifyEncoding
  3531. {
  3532.     /_tempEncode exch ddef
  3533.     
  3534.     % pointer for sequential encodings
  3535.     /_pntr 0 ddef
  3536.     
  3537.     {
  3538.         % get bottom object
  3539.         counttomark -1 roll
  3540.         % is it a mark ?
  3541.         dup type dup /marktype eq         
  3542.         {
  3543.             % exit
  3544.             pop pop exit
  3545.         }
  3546.         {
  3547.             % ... object ... type ....
  3548.             % insert if a nametype
  3549.             /nametype eq
  3550.             {
  3551.                 % insert the name at _pntr and increment pointer
  3552.                 _tempEncode /_pntr dup load dup 3 1 roll 1 add ddef 3 -1 roll
  3553.                 put
  3554.             }
  3555.             {
  3556.                 % reset _pntr if it's a number
  3557.                 /_pntr exch ddef                    
  3558.             }
  3559.             ifelse
  3560.         }
  3561.         ifelse
  3562.     }
  3563.     loop    
  3564.     
  3565.     % return the modified encoding
  3566.     _tempEncode
  3567. }
  3568. def
  3569. /TE    % Set std platform encoding     % (encoding pairs) TE -
  3570. {
  3571.     StandardEncoding 256 array copy modifyEncoding 
  3572.     /_nativeEncoding exch def
  3573. } def
  3574. % re-define font
  3575. % expected arguments
  3576. % for 'normal fonts : 
  3577. % [ /_Helvetica-Bold/Helvetica-Bold direction fontScript defaultEncoding TZ
  3578. %
  3579. % for cartographic, pictographic, and expert fonts :
  3580. % [ ... number value stream ... /_Symbol/Symbol 
  3581. %    direction fontScript defaultEncoding TZ
  3582. % for blended fonts w/ default encoding :
  3583. % [ /_AdobeSans_20ULig1XCond-Bold/AdobeSans 
  3584. %    direction fontScript defaultEncoding [ w0 w1 ... wn ] TZ
  3585. % for blended fonts w/ special encoding :
  3586. % [ ... number value stream ... /_AdobeSans_20ULig1XCond/AdobeSans 
  3587. %    direction fontScript defaultEncoding [ w0 w1 ... wn ] TZ
  3588. /TZ        
  3589. {
  3590.     % set weight vector (if present)
  3591.     dup type /arraytype eq {/_wv exch def} {/_wv 0 def} ifelse 
  3592.     % platform dependent coding flag
  3593.     /_useNativeEncoding exch def
  3594.     % pop fontScript & direction
  3595.     pop pop
  3596.     
  3597.     % create a new dictionary with length
  3598.     % equal to original dictionary length + 2
  3599.     % copy all the key/value pairs except FID
  3600.     % call makeblended font with the weight values if _wv is an array
  3601.     findfont _wv type /arraytype eq {_wv makeblendedfont} if dup length 2 add dict
  3602.     
  3603.     begin
  3604.     
  3605.         % copy all the values but the FID
  3606.         % into the new dictionary
  3607.         mark exch
  3608.         {
  3609.             1 index /FID ne { def } if cleartomark mark
  3610.         }
  3611.         forall
  3612.         % discard last mark
  3613.         pop
  3614.         
  3615.         % define FontName
  3616.         /FontName exch def
  3617.         
  3618.         % if no re-encoding stream is present
  3619.         % then if the base encoding vector of the font
  3620.         % is the same as StandardEncoding
  3621.         % and the use platform encoding flag is true
  3622.         % then install AI platform encoding
  3623.         % else leave the base encoding in effect
  3624.         counttomark 0 eq
  3625.         {
  3626.             1 _useNativeEncoding eq
  3627.             {
  3628.                 /Encoding _nativeEncoding def
  3629.             }
  3630.             if
  3631.             % clean up
  3632.             cleartomark
  3633.         }
  3634.         {    
  3635.             % custom encoding to be done
  3636.             % start off with a copy of the font's standard encoding
  3637.             /Encoding load 256 array copy 
  3638.             modifyEncoding /Encoding exch def
  3639.         }
  3640.         ifelse        
  3641.         FontName currentdict
  3642.     end
  3643.     
  3644.     % register the new font
  3645.     definefont pop
  3646. }
  3647. def
  3648. % text painting operators
  3649. /tr                    % string tr ax ay string 
  3650. {
  3651. _ax _ay 3 2 roll
  3652. } def
  3653. /trj                % string trj cx cy fillchar ax ay string 
  3654. {
  3655. _cx _cy _sp _ax _ay 6 5 roll
  3656. } def
  3657. /a0
  3658. {
  3659. /Tx    % text                            % textString Tx -
  3660.     {
  3661.     dup 
  3662.     currentpoint 3 2 roll
  3663.     tr _psf
  3664.     newpath moveto
  3665.     tr _ctm _pss
  3666.     } ddef
  3667. /Tj    % justified text                % textString Tj -
  3668.     {
  3669.     dup
  3670.     currentpoint 3 2 roll
  3671.     trj _pjsf
  3672.     newpath moveto
  3673.     trj _ctm _pjss
  3674.     } ddef
  3675.     
  3676. } def
  3677. /a1
  3678. {
  3679. /Tx    % text                            % textString Tx -
  3680.     {
  3681.     dup currentpoint 4 2 roll gsave
  3682.     dup currentpoint 3 2 roll
  3683.     tr _psf
  3684.     ne°¿ wpath moveto
  3685.     tr _ctm _pss
  3686.     grestore 3 1 roll moveto tr sp
  3687.     } ddef
  3688. /Tj    % justified text                % textString Tj -
  3689.     {
  3690.     dup currentpoint 4 2 roll gsave
  3691.     dup currentpoint 3 2 roll
  3692.     trj _pjsf
  3693.     newpath moveto
  3694.     trj _ctm _pjss
  3695.     grestore 3 1 roll moveto tr sp
  3696.     } ddef
  3697.     
  3698. } def
  3699. /e0
  3700. {
  3701. /Tx    % text                            % textString Tx -
  3702.     {
  3703.     tr _psf
  3704.     } ddef
  3705. /Tj    % justified text                % textString Tj -
  3706.     {
  3707.     trj _pjsf
  3708.     } ddef
  3709. } def
  3710. /e1
  3711. {
  3712. /Tx    % text                            % textString Tx -
  3713.     {
  3714.     dup currentpoint 4 2 roll gsave 
  3715.     tr _psf  
  3716.     grestore 3 1 roll moveto tr sp 
  3717.     } ddef
  3718. /Tj    % justified text                % textString Tj -
  3719.     {
  3720.     dup currentpoint 4 2 roll gsave 
  3721.     trj _pjsf
  3722.     grestore 3 1 roll moveto tr sp 
  3723.     } ddef
  3724. } def
  3725. /i0
  3726. {
  3727. /Tx    % text                            % textString Tx -
  3728.     {
  3729.     tr sp
  3730.     } ddef
  3731. /Tj    % justified text                % textString Tj -
  3732.     {
  3733.     trj jsp
  3734.     } ddef
  3735. } def
  3736. /i1
  3737. {
  3738. W N
  3739. } def
  3740. /o0
  3741. {
  3742. /Tx    % text                            % textString Tx -
  3743.     {
  3744.     tr sw rmoveto
  3745.     } ddef
  3746. /Tj    % justified text                % textString Tj -
  3747.     {
  3748.     trj swj rmoveto
  3749.     } ddef
  3750. } def
  3751. /r0
  3752. {
  3753. /Tx    % text                            % textString Tx -
  3754.     {
  3755.     tr _ctm _pss
  3756.     } ddef
  3757. /Tj    % justified text                % textString Tj -
  3758.     {
  3759.     trj _ctm _pjss
  3760.     } ddef
  3761. } def
  3762. /r1
  3763. {
  3764. /Tx    % text                            % textString Tx -
  3765.     {
  3766.     dup currentpoint 4 2 roll currentpoint gsave newpath moveto
  3767.     tr _ctm _pss 
  3768.     grestore 3 1 roll moveto tr sp 
  3769.     } ddef
  3770. /Tj    % justified text                % textString Tj -
  3771.     {
  3772.     dup currentpoint 4 2 roll currentpoint gsave newpath moveto
  3773.     trj _ctm _pjss
  3774.     grestore 3 1 roll moveto tr sp 
  3775.     } ddef
  3776. } def
  3777. % font operators
  3778. % Binding
  3779. /To    % begin text                     % bindType To -
  3780. {
  3781.     pop _ctm currentmatrix pop
  3782. } def
  3783. /TO    % end text                    % TO -
  3784. {
  3785.     Te _ctm setmatrix newpath
  3786. } def
  3787. % Text paths
  3788. /Tp    % begin text path                % a b c d tx ty startPt Tp -
  3789. {
  3790.     pop _tm astore pop _ctm setmatrix 
  3791.     _tDict begin /W {} def /h {} def
  3792. } def
  3793. /TP    % end text path                    % TP -
  3794. {
  3795.     end
  3796.     iTm 0 0 moveto
  3797. } def
  3798. % Render mode & matrix operators
  3799. /Tr    % begin render                    % render Tr - 
  3800. {
  3801.     _render 3 le {currentpoint newpath moveto} if
  3802.     dup 8 eq {pop 0} {dup 9 eq {pop 1} if} ifelse
  3803.     dup /_render exch ddef
  3804.     _renderStart exch get load exec
  3805. } def
  3806. /iTm % internal set text matrix        % - iTm -    (uses _tm as implicit argument)
  3807. {
  3808. _ctm setmatrix _tm concat 0 _rise translate _hs 1 scale
  3809. } def
  3810. /Tm % set text matrix                % a b c d tx ty Tm -
  3811. {
  3812. _tm astore pop iTm 0 0 moveto
  3813. } def
  3814. /Td % translate text matrix         % tx ty Td -
  3815. {
  3816. _mtx translate _tm _tm concatmatrix pop iTm 0 0 moveto
  3817. } def
  3818. /Te    % end render                    % - Te -
  3819. {
  3820.     _render -1 eq {} {_renderEnd _render get dup null ne {load exec} {pop} ifelse} ifelse
  3821.     /_render -1 ddef
  3822. } def
  3823. % Attributes
  3824. /Ta    % set alignment                    % alignment Ta -
  3825. {
  3826. pop
  3827. } def
  3828. /Tf    % set font name and size        % fontname size Tf -
  3829. {
  3830. dup 1000 div /_fScl exch ddef
  3831. exch findfont exch scalefont setfont
  3832. } def
  3833. /Tl    % set leading                    % leading paragraphLeading Tl -
  3834. {
  3835. pop
  3836. 0 exch _leading astore pop
  3837. } def
  3838. /Tt    % set user tracking                % userTracking Tt -
  3839. {
  3840. pop
  3841. } def
  3842. /TW % set word spacing                % minSpace optSpace maxSpace TW -
  3843. {
  3844. 3 npop
  3845. } def
  3846. /Tw    % set computed word spacing        % wordSpace Tw
  3847. {
  3848. /_cx exch ddef
  3849. } def
  3850. /TC % set character spacing            % minSpace optSpace maxSpace TC -
  3851. {
  3852. 3 npop
  3853. } def
  3854. /Tc    % set computed char spacing     % charSpace Tc -
  3855. {
  3856. /_ax exch ddef
  3857. } def
  3858. /Ts % set super/subscripting (rise)    % rise Ts -
  3859. {
  3860. /_rise exch ddef
  3861. currentpoint
  3862. iTm
  3863. moveto
  3864. } def
  3865. /Ti    % set indentation                % firstStartIndent otherStartIndent stopIndent Ti -
  3866. {
  3867. 3 npop
  3868. } def
  3869. /Tz % set horizontal scaling        % scalePercent Tz -
  3870. {
  3871. 100 div /_hs exch ddef
  3872. iTm
  3873. } def
  3874. /TA % set pairwise kerning            % autoKern TA -
  3875.                                     %    autoKern = 0 -> no pair kerning
  3876.                                     %             = 1 -> automatic pair kerning
  3877. {
  3878. pop
  3879. } def
  3880. /Tq % set hanging quotes            % hangingQuotes Tq -
  3881.                                     %    hangingQuotes     = 0 -> no hanging quotes
  3882.                                     %                     = 1 -> hanging quotes
  3883. {
  3884. pop
  3885. } def
  3886. % Text Bodies
  3887. /TX {pop} def
  3888. %/Tx    % non-justified text            % textString Tx -
  3889. %/Tj    % justified text                % textString Tj -
  3890. /Tk    % kern                            % autoKern kernValue Tk -
  3891.                                     %      autoKern = 0 -> manual kern, = 1 -> auto kern
  3892.                                     %    kernValue = kern value in em/1000 space
  3893. {
  3894. exch pop _fScl mul neg 0 rmoveto
  3895. } def
  3896. /TK    % non-printing kern                % autoKern kernValue TK -
  3897. {
  3898. 2 npop
  3899. } def
  3900. /T* % carriage return & line feed    % - T* -
  3901. {
  3902. _leading aload pop neg Td
  3903. } def
  3904. /T*- % carriage return & negative line feed    % - T*- -
  3905. {
  3906. _leading aload pop Td
  3907. } def
  3908. /T-    % print a discretionary hyphen    % - T- -
  3909. {
  3910. _hyphen Tx
  3911. } def
  3912. /T+    % discretionary hyphen hyphen    % - T+ -
  3913. {} def
  3914. /TR    % reset pattern matrix             % a b c d tx ty TR -
  3915. {
  3916. _ctm currentmatrix pop     
  3917. _tm astore pop 
  3918. iTm 0 0 moveto 
  3919. } def
  3920. /TS    % special chars                    % textString justified TS -
  3921. {
  3922. 0 eq {Tx} {Tj} ifelse
  3923. } def
  3924. currentdict readonly pop end
  3925. setpacking
  3926. %%EndResource
  3927. %%BeginResource: procset Adobe_IllustratorA_AI3 1.0 2
  3928. %%Title: (Adobe Illustrator (R) Version 3.0 Abbreviated Prolog)
  3929. %%Version: 1.0 
  3930. %%CreationDate: (7/22/89) ()
  3931. %%Copyright: ((C) 1987-1990 Adobe Systems Incorporated All Rights Reserved)
  3932. currentpacking true setpacking
  3933. userdict /Adobe_IllustratorA_AI3 61 dict dup begin put
  3934. % initialization
  3935. /initialize                % - initialize -
  3936. {
  3937. % 47 vars, but leave slack of 10 entries for custom Postscript fragments
  3938. userdict /Adobe_IllustratorA_AI3_vars 57 dict dup begin put
  3939. % paint operands
  3940. /_lp /none def
  3941. /_pf {} def
  3942. /_ps {} def
  3943. /_psf {} def
  3944. /_pss {} def
  3945. /_pjsf {} def
  3946. /_pjss {} def
  3947. /_pola 0 def
  3948. /_doClip 0 def
  3949. % paint operators
  3950. /cf    currentflat def    % - cf flatness
  3951. % typography operands
  3952. /_tm matrix def
  3953. /_renderStart [/e0 /r0 /a0 /o0 /e1 /r1 /a1 /i0] def 
  3954. /_renderEnd [null null null null /i1 /i1 /i1 /i1] def
  3955. /_render -1 def
  3956. /_rise 0 def
  3957. /_ax 0 def            % x character spacing    (_ax, _ay, _cx, _cy follows awidthshow naming convention)
  3958. /_ay 0 def            % y character spacing
  3959. /_cx 0 def            % x word spacing
  3960. /_cy 0 def            % y word spacing
  3961. /_leading [0 0] def
  3962. /_ctm matrix def
  3963. /_mtx matrix def
  3964. /_sp 16#020 def
  3965. /_hyphen (-) def
  3966. /_fScl 0 def
  3967. /_cnt 0 def
  3968. /_hs 1 def
  3969. /_nativeEncoding 0 def
  3970. /_useNativeEncoding 0 def
  3971. /_tempEncode 0 def
  3972. /_pntr 0 def
  3973. /_tDict 2 dict def
  3974. % typography operators
  3975. /Tx {} def
  3976. /Tj {} def
  3977. % compound path operators
  3978. /CRender {} def
  3979. % printing
  3980. /_AI3_savepage {} def
  3981. % color operands
  3982. /_gf null def
  3983. /_cf 4 array def
  3984. /_if null def
  3985. /_of false def
  3986. /_fc {} def
  3987. /_gs null def
  3988. /_cs 4 array def
  3989. /_is null def
  3990. /_os false def
  3991. /_sc {} def
  3992. /_i null def
  3993. Adobe_IllustratorA_AI3 begin
  3994. Adobe_IllustratorA_AI3
  3995.     {
  3996.     dup xcheck
  3997.         {
  3998.         bind
  3999.         } if
  4000.     pop pop
  4001.     } forall
  4002. end
  4003. end
  4004. Adobe_IllustratorA_AI3 begin
  4005. Adobe_IllustratorA_AI3_vars begin
  4006. newpath
  4007. } def
  4008. /terminate                % - terminate -
  4009. {
  4010. end
  4011. end
  4012. } def
  4013. % definition operators
  4014. /_                    % - _ null
  4015. null def
  4016. /ddef                % key value ddef -
  4017. {
  4018. Adobe_IllustratorA_AI3_vars 3 1 roll put
  4019. } def
  4020. /xput                % key value literal xput -
  4021. {
  4022. dup load dup length exch maxlength eq
  4023.     {
  4024.     dup dup load dup
  4025.     length 2 mul dict copy def
  4026.     } if
  4027. load begin def end
  4028. } def
  4029. /npop                % integer npop -
  4030. {
  4031.     {
  4032.     pop
  4033.     } repeat
  4034. } def
  4035. % marking operators
  4036. /sw                    % ax ay string sw x y 
  4037. {
  4038. dup length exch stringwidth
  4039. exch 5 -1 roll 3 index 1 sub mul add
  4040. 4 1 roll 3 1 roll 1 sub mul add
  4041. } def
  4042. /swj                % cx cy fillchar ax ay string swj x y
  4043. {
  4044. dup 4 1 roll
  4045. dup length exch stringwidth 
  4046. exch 5 -1 roll 3 index 1 sub mul add
  4047. 4 1 roll 3 1 roll 1 sub mul add 
  4048. 6 2 roll /_cnt 0 ddef
  4049. {1 index eq {/_cnt _cnt 1 add ddef} if} forall pop
  4050. exch _cnt mul exch _cnt mul 2 index add 4 1 roll 2 index add 4 1 roll pop pop
  4051. } def
  4052. /ss                    % ax ay string matrix ss -
  4053. {
  4054. 4 1 roll
  4055.     {                % matrix ax ay char 0 0 {proc} -
  4056.     2 npop 
  4057.     (0) exch 2 copy 0 exch put pop
  4058.     gsave
  4059.     false charpath currentpoint
  4060.     4 index setmatrix
  4061.     stroke
  4062.     grestore
  4063.     moveto
  4064.     2 copy rmoveto
  4065.     } exch cshow
  4066. 3 npop
  4067. } def
  4068. /jss                % cx cy fillchar ax ay string matrix jss -
  4069. {
  4070. 4 1 roll
  4071.     {                % cx cy fillchar matrix ax ay char 0 0 {proc} -   
  4072.     2 npop 
  4073.     (0) exch 2 copy 0 exch put 
  4074.     gsave
  4075.     _sp eq 
  4076.         {
  4077.         exch 6 index 6 index 6 index 5 -1 roll widthshow  
  4078.         currentpoint
  4079.         }
  4080.         {
  4081.         false charpath currentpoint
  4082.         4 index setmatrix stroke
  4083.         }ifelse
  4084.     grestore
  4085.     moveto
  4086.     2 copy rmoveto
  4087.     } exch cshow
  4088. 6 npop
  4089. } def
  4090. % path operators
  4091. /sp                    % ax ay string sp -
  4092. {
  4093.     {
  4094.     2 npop (0) exch
  4095.     2 copy 0 exch put pop
  4096.     false charpath
  4097.     2 copy rmoveto
  4098.     } exch cshow
  4099. 2 npop
  4100. } def
  4101. /jsp                    % cx cy fillchar ax ay string jsp -
  4102. {
  4103.     {                    % cx cy fillchar ax ay char 0 0 {proc} -
  4104.     2 npop 
  4105.     (0) exch 2 copy 0 exch put 
  4106.     _sp eq 
  4107.         {
  4108.         exch 5 index 5 index 5 index 5 -1 roll w°¿ idthshow  
  4109.         }
  4110.         {
  4111.         false charpath
  4112.         }ifelse
  4113.     2 copy rmoveto
  4114.     } exch cshow
  4115. 5 npop
  4116. } def
  4117. % path construction operators
  4118. /pl                % x y pl x y
  4119. {
  4120. transform
  4121. 0.25 sub round 0.25 add exch
  4122. 0.25 sub round 0.25 add exch
  4123. itransform
  4124. } def
  4125. /setstrokeadjust where
  4126.     {
  4127.     pop true setstrokeadjust
  4128.     /c                % x1 y1 x2 y2 x3 y3 c -
  4129.     {
  4130.     curveto
  4131.     } def
  4132.     /C
  4133.     /c load def
  4134.     /v                % x2 y2 x3 y3 v -
  4135.     {
  4136.     currentpoint 6 2 roll curveto
  4137.     } def
  4138.     /V
  4139.     /v load def
  4140.     /y                % x1 y1 x2 y2 y -
  4141.     {
  4142.     2 copy curveto
  4143.     } def
  4144.     /Y
  4145.     /y load def
  4146.     /l                % x y l -
  4147.     {
  4148.     lineto
  4149.     } def
  4150.     /L
  4151.     /l load def
  4152.     /m                % x y m -
  4153.     {
  4154.     moveto
  4155.     } def
  4156.     }
  4157.     {%else
  4158.     /c
  4159.     {
  4160.     pl curveto
  4161.     } def
  4162.     /C
  4163.     /c load def
  4164.     /v
  4165.     {
  4166.     currentpoint 6 2 roll pl curveto
  4167.     } def
  4168.     /V
  4169.     /v load def
  4170.     /y
  4171.     {
  4172.     pl 2 copy curveto
  4173.     } def
  4174.     /Y
  4175.     /y load def
  4176.     /l
  4177.     {
  4178.     pl lineto
  4179.     } def
  4180.     /L
  4181.     /l load def
  4182.     /m
  4183.     {
  4184.     pl moveto
  4185.     } def
  4186.     }ifelse
  4187. % graphic state operators
  4188. /d                    % array phase d -
  4189. {
  4190. setdash
  4191. } def
  4192. /cf    {} def            % - cf flatness
  4193. /i                    % flatness i -
  4194. {
  4195. dup 0 eq
  4196.     {
  4197.     pop cf
  4198.     } if
  4199. setflat
  4200. } def
  4201. /j                    % linejoin j -
  4202. {
  4203. setlinejoin
  4204. } def
  4205. /J                    % linecap J -
  4206. {
  4207. setlinecap
  4208. } def
  4209. /M                    % miterlimit M -
  4210. {
  4211. setmiterlimit
  4212. } def
  4213. /w                    % linewidth w -
  4214. {
  4215. setlinewidth
  4216. } def
  4217. % path painting operators
  4218. /H                    % - H -
  4219. {} def
  4220. /h                    % - h -
  4221. {
  4222. closepath
  4223. } def
  4224. /N                    % - N -
  4225. {
  4226. _pola 0 eq 
  4227.     {
  4228.     _doClip 1 eq {clip /_doClip 0 ddef} if 
  4229.     newpath
  4230.     } 
  4231.     {
  4232.     /CRender {N} ddef
  4233.     }ifelse
  4234. } def
  4235. /n                    % - n -
  4236. {N} def
  4237. /F                    % - F -
  4238. {
  4239. _pola 0 eq 
  4240.     {
  4241.     _doClip 1 eq 
  4242.         {
  4243.         gsave _pf grestore clip newpath /_lp /none ddef _fc 
  4244.         /_doClip 0 ddef
  4245.         }
  4246.         {
  4247.         _pf
  4248.         }ifelse
  4249.     } 
  4250.     {
  4251.     /CRender {F} ddef
  4252.     }ifelse
  4253. } def
  4254. /f                    % - f -
  4255. {
  4256. closepath
  4257. F
  4258. } def
  4259. /S                    % - S -
  4260. {
  4261. _pola 0 eq 
  4262.     {
  4263.     _doClip 1 eq 
  4264.         {
  4265.         gsave _ps grestore clip newpath /_lp /none ddef _sc 
  4266.         /_doClip 0 ddef
  4267.         }
  4268.         {
  4269.         _ps
  4270.         }ifelse
  4271.     } 
  4272.     {
  4273.     /CRender {S} ddef
  4274.     }ifelse
  4275. } def
  4276. /s                    % - s -
  4277. {
  4278. closepath
  4279. S
  4280. } def
  4281. /B                    % - B -
  4282. {
  4283. _pola 0 eq 
  4284.     {
  4285.     _doClip 1 eq     % F clears _doClip
  4286.     gsave F grestore 
  4287.         {
  4288.         gsave S grestore clip newpath /_lp /none ddef _sc
  4289.         /_doClip 0 ddef
  4290.         } 
  4291.         {
  4292.         S
  4293.         }ifelse
  4294.     }
  4295.     {
  4296.     /CRender {B} ddef
  4297.     }ifelse
  4298. } def
  4299. /b                    % - b -
  4300. {
  4301. closepath
  4302. B
  4303. } def
  4304. /W                    % - W -
  4305. {
  4306. /_doClip 1 ddef
  4307. } def
  4308. /*                    % - [string] * -
  4309. {
  4310. count 0 ne 
  4311.     {
  4312.     dup type (stringtype) eq {pop} if
  4313.     } if 
  4314. _pola 0 eq {newpath} if
  4315. } def
  4316. % group operators
  4317. /u                    % - u -
  4318. {} def
  4319. /U                    % - U -
  4320. {} def
  4321. /q                    % - q -
  4322. {
  4323. _pola 0 eq {gsave} if
  4324. } def
  4325. /Q                    % - Q -
  4326. {
  4327. _pola 0 eq {grestore} if
  4328. } def
  4329. /*u                    % - *u -
  4330. {
  4331. _pola 1 add /_pola exch ddef
  4332. } def
  4333. /*U                    % - *U -
  4334. {
  4335. _pola 1 sub /_pola exch ddef 
  4336. _pola 0 eq {CRender} if
  4337. } def
  4338. /D                    % polarized D -
  4339. {pop} def
  4340. /*w                    % - *w -
  4341. {} def
  4342. /*W                    % - *W -
  4343. {} def
  4344. % place operators
  4345. /`                    % matrix llx lly urx ury string ` -
  4346. {
  4347. /_i save ddef
  4348. 6 1 roll 4 npop
  4349. concat pop
  4350. userdict begin
  4351. /showpage {} def
  4352. 0 setgray
  4353. 0 setlinecap
  4354. 1 setlinewidth
  4355. 0 setlinejoin
  4356. 10 setmiterlimit
  4357. [] 0 setdash
  4358. newpath
  4359. 0 setgray
  4360. false setoverprint
  4361. } def
  4362. /~                    % - ~ -
  4363. {
  4364. end
  4365. _i restore
  4366. } def
  4367. % color operators
  4368. /O                    % flag O -
  4369. {
  4370. 0 ne
  4371. /_of exch ddef
  4372. /_lp /none ddef
  4373. } def
  4374. /R                    % flag R -
  4375. {
  4376. 0 ne
  4377. /_os exch ddef
  4378. /_lp /none ddef
  4379. } def
  4380. /g                    % gray g -
  4381. {
  4382. /_gf exch ddef
  4383. /_fc
  4384. _lp /fill ne
  4385.     {
  4386.     _of setoverprint
  4387.     _gf setgray
  4388.     /_lp /fill ddef
  4389.     } if
  4390. } ddef
  4391. /_pf
  4392. {
  4393. _fc
  4394. fill
  4395. } ddef
  4396. /_psf
  4397. {
  4398. _fc
  4399. ashow
  4400. } ddef
  4401. /_pjsf
  4402. {
  4403. _fc
  4404. awidthshow
  4405. } ddef
  4406. /_lp /none ddef
  4407. } def
  4408. /G                    % gray G -
  4409. {
  4410. /_gs exch ddef
  4411. /_sc
  4412. {
  4413. _lp /stroke ne
  4414.     {
  4415.     _os setoverprint
  4416.     _gs setgray
  4417.     /_lp /stroke ddef
  4418.     } if
  4419. } ddef
  4420. /_ps
  4421. {
  4422. _sc
  4423. stroke
  4424. } ddef
  4425. /_pss
  4426. {
  4427. _sc
  4428. ss
  4429. } ddef
  4430. /_pjss
  4431. {
  4432. _sc
  4433. jss
  4434. } ddef
  4435. /_lp /none ddef
  4436. } def
  4437. /k                    % cyan magenta yellow black k -
  4438. {
  4439. _cf astore pop
  4440. /_fc
  4441. {
  4442. _lp /fill ne
  4443.     {
  4444.     _of setoverprint
  4445.     _cf aload pop setcmykcolor
  4446.     /_lp /fill ddef
  4447.     } if
  4448. } ddef
  4449. /_pf
  4450. {
  4451. _fc
  4452. fill
  4453. } ddef
  4454. /_psf
  4455. {
  4456. _fc
  4457. ashow
  4458. } ddef
  4459. /_pjsf
  4460. {
  4461. _fc
  4462. awidthshow
  4463. } ddef
  4464. /_lp /none ddef
  4465. } def
  4466. /K                    % cyan magenta yellow black K -
  4467. {
  4468. _cs astore pop
  4469. /_sc
  4470. {
  4471. _lp /stroke ne
  4472.     {
  4473.     _os setoverprint
  4474.     _cs aload pop setcmykcolor
  4475.     /_lp /stroke ddef
  4476.     } if
  4477. } ddef
  4478. /_ps
  4479. {
  4480. _sc
  4481. stroke
  4482. } ddef
  4483. /_pss
  4484. {
  4485. _sc
  4486. ss
  4487. } ddef
  4488. /_pjss
  4489. {
  4490. _sc
  4491. jss
  4492. } ddef
  4493. /_lp /none ddef
  4494. } def
  4495. /x                    % cyan magenta yellow black name gray x -
  4496. {
  4497. /_gf exch ddef
  4498. findcmykcustomcolor
  4499. /_if exch ddef
  4500. /_fc
  4501. _lp /fill ne
  4502.     {
  4503.     _of setoverprint
  4504.     _if _gf 1 exch sub setcustomcolor
  4505.     /_lp /fill ddef
  4506.     } if
  4507. } ddef
  4508. /_pf
  4509. {
  4510. _fc
  4511. fill
  4512. } ddef
  4513. /_psf
  4514. {
  4515. _fc
  4516. ashow
  4517. } ddef
  4518. /_pjsf
  4519. {
  4520. _fc
  4521. awidthshow
  4522. } ddef
  4523. /_lp /none ddef
  4524. } def
  4525. /X                    % cyan magenta yellow black name gray X -
  4526. {
  4527. /_gs exch ddef
  4528. findcmykcustomcolor
  4529. /_is exch ddef
  4530. /_sc
  4531. {
  4532. _lp /stroke ne
  4533.     {
  4534.     _os setoverprint
  4535.     _is _gs 1 exch sub setcustomcolor
  4536.     /_lp /stroke ddef
  4537.     } if
  4538. } ddef
  4539. /_ps
  4540. {
  4541. _sc
  4542. stroke
  4543. } ddef
  4544. /_pss
  4545. {
  4546. _sc
  4547. ss
  4548. } ddef
  4549. /_pjss
  4550. {
  4551. _sc
  4552. jss
  4553. } ddef
  4554. /_lp /none ddef
  4555. } def
  4556. % locked object operator
  4557. /A                    % value A -
  4558. {
  4559. pop
  4560. } def
  4561. currentdict readonly pop end
  4562. setpacking
  4563. % annotate page operator
  4564. /annotatepage
  4565. {
  4566. } def
  4567. %%EndResource
  4568. %%EndProlog
  4569. %%BeginSetup
  4570. %%IncludeFont: Helvetica
  4571. Adobe_cmykcolor /initialize get exec
  4572. Adobe_cshow /initialize get exec
  4573. Adobe_customcolor /initialize get exec
  4574. Adobe_typography_AI3 /initialize get exec
  4575. Adobe_IllustratorA_AI3 /initialize get exec
  4576. [
  4577. 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis
  4578. /Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute
  4579. /egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde
  4580. /oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex
  4581. /udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls
  4582. /registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash
  4583. /.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef
  4584. /.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash
  4585. /questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef
  4586. /guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe
  4587. /endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide
  4588. /.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright
  4589. /fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand
  4590. /Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex
  4591. /Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex
  4592. /Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla
  4593. /hungarumlaut/ogonek/caron
  4594. TE
  4595. %AI3_BeginEncoding: _Helvetica Helvetica
  4596. [/_Helvetica/Helvetica 0 0 1 TZ
  4597. %AI3_EndEncoding TrueType
  4598. %%EndSetup
  4599. 0 A
  4600. u
  4601. u
  4602. u
  4603. 0 O
  4604. 0 g
  4605. 0 i 0 J 0 j 1 w 4 M []0 d
  4606. %AI3_Note:
  4607. 0 D
  4608. 246.6651 248.125 m
  4609. 246.6651 343.8851 L
  4610. 138.9349 343.8851 L
  4611. 138.9349 248.125 L
  4612. 246.6651 248.125 L
  4613. f
  4614. 193.5425 295.2626 m
  4615. F
  4616. U
  4617. u
  4618. 246.6651 206.23 m
  4619. 246.6651 230.17 L
  4620. 138.9349 230.17 L
  4621. 138.9349 206.23 L
  4622. 246.6651 206.23 L
  4623. f
  4624. 193.5425 217.4575 m
  4625. F
  4626. U
  4627. u
  4628. 342.2772 155.5924 m
  4629. 342.2772 188.5324 L
  4630. 234.5471 188.5324 L
  4631. 234.5471 155.5924 L
  4632. 342.2772 155.5924 L
  4633. f
  4634. 288.4122 167.5624 m
  4635. F
  4636. U
  4637. u
  4638. 92.5044 113.7748 m
  4639. 92.5044 137.7149 L
  4640. -15.2257 137.7149 L
  4641. -15.2257 113.7748 L
  4642. 92.5044 113.7748 L
  4643. f
  4644. 39.3818 125.0023 m
  4645. F
  4646. U
  4647. u
  4648. 341.5347 113.7748 m
  4649. 341.5347 137.7149 L
  4650. 233.8046 137.7149 L
  4651. 233.8046 113.7748 L
  4652. 341.5347 113.7748 L
  4653. f
  4654. 288.4122 125.0023 m
  4655. F
  4656. U
  4657. u
  4658. 341.6252 0.7247 m
  4659. 341.6252 96.4848 L
  4660. 233.8951 96.4848 L
  4661. 233.8951 0.7247 L
  4662. 341.6252 0.7247 L
  4663. f
  4664. 288.5026 47.8622 m
  4665. F
  4666. U
  4667. u
  4668. 217.0196 113.7748 m
  4669. 217.0196 137.7149 L
  4670. 109.2894 137.7149 L
  4671. 109.2894 113.7748 L
  4672. 217.0196 113.7748 L
  4673. f
  4674. 163.897 125.0023 m
  4675. F
  4676. U
  4677. u
  4678. 154.3945 156.3349 m
  4679. 154.3945 189.2749 L
  4680. 46.6644 189.2749 L
  4681. 46.6644 156.3349 L
  4682. 154.3945 156.3349 L
  4683. f
  4684. 101.8919 167.5624 m
  4685. F
  4686. U
  4687. 92.5949 0.7247 m
  4688. 92.5949 96.4848 L
  4689. -15.1353 96.4848 L
  4690. -15.1353 0.7247 L
  4691. 92.5949 0.7247 L
  4692. f
  4693. U
  4694. 0 R
  4695. 0 G
  4696. 98.9899 50.8547 m
  4697. S
  4698. u
  4699. 0 O
  4700. 0 0.1 0 0 k
  4701. 1 R
  4702. 0.75 w
  4703. 244.4151 250.375 m
  4704. 244.4151 346.1351 L
  4705. 136.6849 346.1351 L
  4706. 136.6849 250.375 L
  4707. 244.4151 250.375 L
  4708. b
  4709. 1 g
  4710. 0 R
  4711. 1 w
  4712. 190.55 298.2551 m
  4713. B
  4714. U
  4715. u
  4716. 0 0.1 0 0 k
  4717. 1 R
  4718. 0.75 w
  4719. 244.4151 208.48 m
  4720. 244.4151 232.42 L
  4721. 136.6849 232.42 L
  4722. 136.6849 208.48 L
  4723. 244.4151 208.48 L
  4724. b
  4725. 1 g
  4726. 0 R
  4727. 1 w
  4728. 190.55 220.45 m
  4729. B
  4730. U
  4731. u
  4732. 0 0.1 0 0 k
  4733. 1 R
  4734. 0.75 w
  4735. 339.2847 158.5849 m
  4736. 339.2847 191.5249 L
  4737. 231.5546 191.5249 L
  4738. 231.5546 158.5849 L
  4739. 339.2847 158.5849 L
  4740. b
  4741. 1 g
  4742. 0 R
  4743. 1 w
  4744. 285.4197 170.5549 m
  4745. B
  4746. U
  4747. u
  4748. 0 0.1 0 0 k
  4749. 1 R
  4750. 0.75 w
  4751. 90.2544 116.0248 m
  4752. 90.2544 139.9649 L
  4753. -17.4757 139.9649 L
  4754. -17.4757 116.0248 L
  4755. 90.2544 116.0248 L
  4756. b
  4757. 1 g
  4758. 0 R
  4759. 1 w
  4760. 36.3893 127.9949 m
  4761. B
  4762. U
  4763. u
  4764. 0 0.1 0 0 k
  4765. 1 R
  4766. 0.75 w
  4767. 339.2847 116.0248 m
  4768. 339.2847 139.9649 L
  4769. 231.5546 139.9649 L
  4770. 231.5546 116.02°¿ 48 L
  4771. 339.2847 116.0248 L
  4772. b
  4773. 1 g
  4774. 0 R
  4775. 1 w
  4776. 285.4197 127.9949 m
  4777. B
  4778. U
  4779. u
  4780. 0 0.1 0 0 k
  4781. 1 R
  4782. 0.75 w
  4783. 339.3752 2.9747 m
  4784. 339.3752 98.7348 L
  4785. 231.645 98.7348 L
  4786. 231.645 2.9747 L
  4787. 339.3752 2.9747 L
  4788. b
  4789. 1 g
  4790. 0 R
  4791. 1 w
  4792. 285.5101 50.8547 m
  4793. B
  4794. U
  4795. u
  4796. 0 0.1 0 0 k
  4797. 1 R
  4798. 0.75 w
  4799. 214.7696 116.0248 m
  4800. 214.7696 139.9649 L
  4801. 107.0394 139.9649 L
  4802. 107.0394 116.0248 L
  4803. 214.7696 116.0248 L
  4804. b
  4805. 1 g
  4806. 0 R
  4807. 1 w
  4808. 160.9045 127.9949 m
  4809. B
  4810. U
  4811. u
  4812. 0 0.1 0 0 k
  4813. 1 R
  4814. 0.75 w
  4815. 152.1445 158.5849 m
  4816. 152.1445 191.5249 L
  4817. 44.4144 191.5249 L
  4818. 44.4144 158.5849 L
  4819. 152.1445 158.5849 L
  4820. b
  4821. 1 g
  4822. 0 R
  4823. 1 w
  4824. 98.7794 170.5549 m
  4825. B
  4826. U
  4827. 0 0.1 0 0 k
  4828. 1 R
  4829. 0.75 w
  4830. 90.3448 2.9747 m
  4831. 90.3448 98.7348 L
  4832. -17.3853 98.7348 L
  4833. -17.3853 2.9747 L
  4834. 90.3448 2.9747 L
  4835. b
  4836. 1 g
  4837. 0 R
  4838. 1 w
  4839. 190.55 250.375 m
  4840. 190.55 232.75 l
  4841. B
  4842. 136.1849 220.45 m
  4843. 98.3699 220.45 l
  4844. 98.3699 191.1899 l
  4845. S
  4846. 244.7401 220.45 m
  4847. 285.5101 220.45 l
  4848. 285.5101 192.0249 l
  4849. S
  4850. 285.5101 158.5849 m
  4851. 285.5101 139.9649 l
  4852. S
  4853. 285.5101 116.0248 m
  4854. 285.5101 98.7348 l
  4855. S
  4856. 152.8549 170.5549 m
  4857. 160.9949 170.5549 l
  4858. 160.9949 139.9649 l
  4859. S
  4860. 44.1248 170.5549 m
  4861. 36.4798 170.5549 l
  4862. 36.4798 139.9649 l
  4863. S
  4864. 36.4798 116.0248 m
  4865. 36.4798 98.7348 l
  4866. S
  4867. U
  4868. u
  4869. 0 O
  4870. 1 g
  4871. 1 R
  4872. 2 j
  4873. 189.3625 299.9375 m
  4874. 204.8625 284.4375 l
  4875. 189.675 269.25 l
  4876. 173.6125 285.3125 l
  4877. 189.3625 299.9375 l
  4878. b
  4879. 188.9875 283.1875 m
  4880. 190.55 284.875 l
  4881. 191.55 286.125 192.675 286 v
  4882. 193.8 285.875 196.4875 285.9375 y
  4883. 201.675 280.8125 l
  4884. 202.1125 274.6875 l
  4885. 199.05 276.5 l
  4886. 194.8625 276.5625 l
  4887. 192.7618 276.8316 191.8 277.3125 v
  4888. 190.55 277.9375 188.9875 279.375 y
  4889. 188.4116 280.3307 188.175 281.75 v
  4890. 188.1125 282.125 189.2375 282.1875 189.8 281.625 c
  4891. 190.1187 281.3063 191.3625 279.625 y
  4892. 192.925 279.6875 l
  4893. 194.3625 280.9375 l
  4894. 193.8625 282.0625 l
  4895. 192.4875 284.1875 191.2375 282.8125 v
  4896. 190.2974 281.7784 188.7375 282.4375 188.9875 283.1875 c
  4897. b
  4898. 1 O
  4899. 0 g
  4900. 0 j
  4901. 201.675 281.5 m
  4902. 204.6125 281.1875 l
  4903. 204.6125 273.4375 l
  4904. 202.3625 273.4375 l
  4905. 199.9875 275.9375 l
  4906. 202.55 273.5625 201.675 281.5 v
  4907. f
  4908. 198.1125 281.5625 m
  4909. 198.1125 280.5 l
  4910. 190.8625 280.5 l
  4911. 189.8 281.625 l
  4912. 198.1125 281.5625 l
  4913. f
  4914. 188.175 281.75 m
  4915. 185.2375 281.75 l
  4916. 184.8 280.5625 185.675 280.5625 v
  4917. 186.55 280.5625 188.425 280.5625 y
  4918. 188.175 281.75 l
  4919. f
  4920. U
  4921. u
  4922. 0 O
  4923. 1 g
  4924. 1 R
  4925. 0 G
  4926. 287.1568 70.8232 m
  4927. 291.309 68.7524 l
  4928. 295.4352 63.9041 l
  4929. 295.4225 57.0195 l
  4930. 292.7036 52.9395 l
  4931. 288.2955 50.0485 l
  4932. 282.5532 49.9688 l
  4933. 277.724 52.8455 l
  4934. 274.2937 57.0046 l
  4935. 274.3132 63.6422 l
  4936. 278.5437 68.7977 l
  4937. 282.5255 70.8611 l
  4938. 287.1568 70.8232 l
  4939. b
  4940. 0 g
  4941. 284.2902 60.4062 m
  4942. 285.7902 60.4062 l
  4943. 285.7902 58.4062 l
  4944. 285.2902 56.9062 l
  4945. 285.2902 53.4062 l
  4946. 284.2902 53.4062 l
  4947. 284.2902 60.4062 l
  4948. f
  4949. u
  4950. 1 R
  4951. 0 G
  4952. 2 w
  4953. 284.7902 71.6562 m
  4954. S
  4955. 0 O
  4956. 1 g
  4957. 1 w
  4958. 286.1405 67.4062 m
  4959. 286.6374 67.4062 287.0402 67.8091 287.0402 68.306 C
  4960. 287.0402 75.0064 L
  4961. 287.0402 75.5033 286.6374 75.9062 286.1405 75.9062 C
  4962. 283.44 75.9062 L
  4963. 282.9431 75.9062 282.5402 75.5033 282.5402 75.0064 C
  4964. 282.5402 68.306 L
  4965. 282.5402 67.8091 282.9431 67.4062 283.44 67.4062 C
  4966. 286.1405 67.4062 L
  4967. b
  4968. U
  4969. 1 J
  4970. 283.0402 77.6562 m
  4971. 286.2902 77.6562 l
  4972. S
  4973. 1 O
  4974. 0 g
  4975. 0 J
  4976. 285.4152 80.1562 m
  4977. 283.5402 81.1562 281.7902 81.7812 v
  4978. 280.0402 82.4062 279.9152 81.5312 278.5402 81.6562 c
  4979. 277.2902 80.5312 280.2902 81.1562 v
  4980. 282.1652 81.2812 282.9152 80.0312 v
  4981. 283.6652 78.7812 284.2902 78.9062 284.7902 79.0312 c
  4982. 285.2902 79.1562 286 79.125 285.4152 80.1562 c
  4983. f
  4984. u
  4985. 276.759 80.5245 m
  4986. 277.1251 80.5245 277.4219 80.8213 277.4219 81.1875 c
  4987. 277.4219 81.5535 277.1251 81.8504 276.759 81.8504 c
  4988. 276.3928 81.8504 276.096 81.5535 276.096 81.1875 c
  4989. 276.096 80.8213 276.3928 80.5245 276.759 80.5245 c
  4990. f
  4991. 276.509 80.9375 m
  4992. F
  4993. U
  4994. u
  4995. 273.4777 80.0558 m
  4996. 273.8438 80.0558 274.1407 80.3526 274.1407 80.7187 c
  4997. 274.1407 81.0848 273.8438 81.3816 273.4777 81.3816 c
  4998. 273.1116 81.3816 272.8148 81.0848 272.8148 80.7187 c
  4999. 272.8148 80.3526 273.1116 80.0558 273.4777 80.0558 c
  5000. f
  5001. 273.7277 80.9687 m
  5002. F
  5003. U
  5004. u
  5005. 270.6027 79.6808 m
  5006. 270.9688 79.6808 271.2657 79.9776 271.2657 80.3437 c
  5007. 271.2657 80.7098 270.9688 81.0066 270.6027 81.0066 c
  5008. 270.2366 81.0066 269.9398 80.7098 269.9398 80.3437 c
  5009. 269.9398 79.9776 270.2366 79.6808 270.6027 79.6808 c
  5010. f
  5011. 270.8527 80.5937 m
  5012. F
  5013. U
  5014. u
  5015. 267.8527 79.6808 m
  5016. 268.2188 79.6808 268.5157 79.9776 268.5157 80.3437 c
  5017. 268.5157 80.7098 268.2188 81.0066 267.8527 81.0066 c
  5018. 267.4866 81.0066 267.1898 80.7098 267.1898 80.3437 c
  5019. 267.1898 79.9776 267.4866 79.6808 267.8527 79.6808 c
  5020. f
  5021. 267.6027 80.0937 m
  5022. F
  5023. U
  5024. U
  5025. 0 To
  5026. 1 0 0 1 191.0686 223.4483 0 Tp
  5027. TP
  5028. -32.9014 0 Td
  5029. 0 Tr
  5030. /_Helvetica 8 Tf
  5031. 0 Ts
  5032. 100 Tz
  5033. 0 Tt
  5034. 0 TA
  5035. 0 0 5 TC
  5036. 100 100 200 TW
  5037. 0 0 0 Ti
  5038. 1 Ta
  5039. 0 Tq
  5040. 9 0 Tl
  5041. 0 Tc
  5042. 0 Tw
  5043. (Sequence grabber) Tx
  5044. (\r) TX 
  5045. -8.8555 -9 Td
  5046. (component \(type 'barg'\)) Tx 
  5047. (\r) TX 
  5048. TO
  5049. 0 To
  5050. 1 0 0 1 189.3 320 0 Tp
  5051. TP
  5052. -28.4453 0 Td
  5053. 0 Tr
  5054. 10 0 Tl
  5055. (Movie recording) Tx
  5056. (\r) TX 
  5057. 9.3291 -10 Td
  5058. (application) Tx 
  5059. (\r) TX 
  5060. TO
  5061. 0 To
  5062. 1 0 0 1 284.2686 30.4482 0 Tp
  5063. TP
  5064. -28.2305 0 Td
  5065. 0 Tr
  5066. (Sound digitizing) Tx
  5067. (\r) TX 
  5068. 11.5625 -10 Td
  5069. (hardware) Tx 
  5070. (\r) TX 
  5071. TO
  5072. 0 To
  5073. 1 0 0 1 96.5 167.5 0 Tp
  5074. TP
  5075. 0 Tr
  5076. 0 O
  5077. (\r) TX 
  5078. TO
  5079. 0 To
  5080. 1 0 0 1 97.5806 181.4483 0 Tp
  5081. TP
  5082. -43.5713 0 Td
  5083. 0 Tr
  5084. 1 O
  5085. 9 0 Tl
  5086. (Sequence grabber video) Tx
  5087. (\r) TX 
  5088. 8.6699 -9 Td
  5089. (channel component) Tx
  5090. (\r) TX 
  5091. -12.6074 -9 Td
  5092. (\(type 'sgch', subtype 'vide'\)) Tx 
  5093. (\r) TX 
  5094. TO
  5095. 0 To
  5096. 1 0 0 1 286.2686 181.4482 0 Tp
  5097. TP
  5098. -44.9072 0 Td
  5099. 0 Tr
  5100. (Sequence grabber sound) Tx
  5101. (\r) TX 
  5102. 10.0059 -9 Td
  5103. (channel component) Tx
  5104. (\r) TX 
  5105. -13.9434 -9 Td
  5106. (\(type 'sgch', subtype 'soun'\)) Tx 
  5107. (\r) TX 
  5108. TO
  5109. 0 To
  5110. 1 0 0 1 36.5 130.4482 0 Tp
  5111. TP
  5112. -25.1143 0 Td
  5113. 0 Tr
  5114. (Video digitizer) Tx
  5115. (\r) TX 
  5116. -15.9756 -9 Td
  5117. (component \(type 'vdig'\)) Tx 
  5118. (\r) TX 
  5119. TO
  5120. 0 To
  5121. 1 0 0 1 160.33 130.4482 0 Tp
  5122. TP
  5123. -33.1123 0 Td
  5124. 0 Tr
  5125. (Image compressor) Tx
  5126. (\r) TX 
  5127. -9.085 -9 Td
  5128. (component \(type 'imco'\)) Tx 
  5129. (\r) TX 
  5130. TO
  5131. 0 To
  5132. 1 0 0 1 285 125.4482 0 Tp
  5133. TP
  5134. -22.6709 0 Td
  5135. 0 Tr
  5136. (Sound driver) Tx 
  5137. (\r) TX 
  5138. TO
  5139. 0 To
  5140. 1 0 0 1 35.75 30.25 0 Tp
  5141. TP
  5142. -26.8945 0 Td
  5143. 0 Tr
  5144. 10 0 Tl
  5145. (Video digitizing) Tx
  5146. (\r) TX 
  5147. 10.2266 -10 Td
  5148. (hardware) Tx 
  5149. (\r) TX 
  5150. TO
  5151. u
  5152. 25.3812 67.1125 m
  5153. 30.8487 67.1125 l
  5154. 30.8487 65.8975 l
  5155. 28.8912 64.0075 l
  5156. 28.6887 64.6825 27.8787 64.885 y
  5157. 26.5287 65.0875 26.1912 64.4125 v
  5158. 25.8537 63.7375 23.9637 63.8725 y
  5159. 22.8162 65.02 21.6012 65.02 y
  5160. 19.9812 65.02 l
  5161. 19.9812 56.9875 l
  5162. 21.1961 56.9875 l
  5163. 23.3562 56.9875 24.3012 58.4725 25.3812 58.3375 c
  5164. 26.4612 58.2025 26.3937 57.2575 28.3512 57.2575 c
  5165. 30.3087 57.2575 30.3087 56.92 y
  5166. 31.0512 55.5025 31.7262 55.57 y
  5167. 45.2937 55.57 l
  5168. 51.7738 62.455 l
  5169. 51.7738 71.1625 l
  5170. 50.1538 72.85 l
  5171. 47.6225 73.9638 l
  5172. 45.0237 76.5625 l
  5173. 39.6237 76.5625 l
  5174. 36.1137 73.0525 l
  5175. 30.9837 73.0525 l
  5176. 29.4312 74.2675 l
  5177. 22.6137 74.2675 20.8587 74.2675 20.8587 71.9725 c
  5178. 20.8587 69.7749 25.3812 70.0825 y
  5179. 25.3812 67.1125 l
  5180. f
  5181. 0 O
  5182. 1 g
  5183. 0.27 w
  5184. 22.0737 64.1425 m
  5185. 22.0737 58 l
  5186. 20.5886 58 l
  5187. 20.5886 64.1425 l
  5188. 22.0737 64.1425 l
  5189. f
  5190. 26.5287 63.4 m
  5191. 26.5287 58.7425 l
  5192. 27.4062 57.19 28.6212 58.7425 v
  5193. 28.6212 63.4 l
  5194. 27.7437 65.2225 26.5287 63.4 v
  5195. f
  5196. 25.9887 72.04 m
  5197. 28.4187 72.04 l
  5198. 28.4187 67.9225 l
  5199. 25.9887 67.9225 l
  5200. 25.9887 72.04 l
  5201. f
  5202. 29.1612 72.04 m
  5203. 31.0512 72.04 l
  5204. 31.0512 67.99 l
  5205. 29.1612 67.99 l
  5206. 29.1612 72.04 l
  5207. f
  5208. u
  5209. 36.0462 67.99 m
  5210. 36.0462 72.04 L
  5211. 31.6587 72.04 L
  5212. 31.6587 67.99 L
  5213. 36.0462 67.99 L
  5214. f
  5215. 33.8525 70.015 m
  5216. F
  5217. U
  5218. 37.0587 72.31 m
  5219. 37.7337 73.93 38.4087 72.31 v
  5220. 38.4087 67.5175 l
  5221. 37.8687 66.1675 37.0587 67.45 v
  5222. 37.0587 72.31 l
  5223. f
  5224. 32.1987 66.64 m
  5225. 36.3162 66.64 l
  5226. 38.0712 65.8975 36.4512 65.56 v
  5227. 32.3337 65.56 l
  5228. 30.4437 65.6275 32.1987 66.64 v
  5229. f
  5230. 38.4762 74.065 m
  5231. 40.1637 75.685 l
  5232. 44.8212 75.685 l
  5233. 46.7112 74.065 l
  5234. 47.2512 72.9175 45.6312 73.525 v
  5235. 43.8762 74.6725 l
  5236. 41.3787 74.6725 l
  5237. 39.3537 73.1875 l
  5238. 37.7337 72.6475 38.4762 74.065 v
  5239. f
  5240. 39.5562 72.58 m
  5241. 39.5562 66.37 l
  5242. 39.5562 65.8975 40.2312 65.83 v
  5243. 40.9062 65.7625 42.5262 65.0875 42.7287 63.8725 c
  5244. 42.7962 62.3875 l
  5245. 50.8288 62.3875 l
  5246. 51.4363 62.185 51.3688 63.265 v
  5247. 51.2719 64.8145 51.3688 70.0825 y
  5248. 51.5038 72.1075 50.4238 70.825 v
  5249. 49.9513 70.15 49.2762 70.15 v
  5250. 49.2762 69.6775 l
  5251. 50.4238 69.6775 50.4238 68.7325 v
  5252. 50.1538 68.1925 49.2088 68.26 v
  5253. 49.2088 67.18 l
  5254. 50.5588 67.2475 50.4913 66.505 v
  5255. 50.6938 65.7625 49.3438 65.7625 v
  5256. 49.3438 65.02 l
  5257. 50.4913 65.3575 50.4913 64.0075 v
  5258. 48.1962 64.0075 l
  5259. 48.1962 71.365 l
  5260. 49.7487 71.2975 49.8162 72.04 v
  5261. 50.0187 72.58 48.3312 72.58 v
  5262. 46.6437 72.58 39.5562 72.58 y
  5263. f
  5264. 29.7012 58.945 m
  5265. 41.9187 58.945 l
  5266. 41.9187 63.67 l
  5267. 41.9862 64.75 40.4337 64.75 v
  5268. 38.8812 64.75 31.1187 64.75 y
  5269. 29.7012 64.8175 29.7012 63.4 v
  5270. 29.7012 61.9825 29.7012 58.945 y
  5271. f
  5272. u
  5273. u
  5274. 0 g
  5275. 33.6162 62.3875 m
  5276. 33.9517 62.3875 34.2237 62.6595 34.2237 62.995 C
  5277. 34.2237 62.995 L
  5278. 34.2237 63.3305 33.9517 63.6025 33.°¿&6162 63.6025 C
  5279. 30.9162 63.6025 L
  5280. 30.5807 63.6025 30.3087 63.3305 30.3087 62.995 C
  5281. 30.3087 62.995 L
  5282. 30.3087 62.6595 30.5807 62.3875 30.9162 62.3875 C
  5283. 33.6162 62.3875 L
  5284. f
  5285. 32.2662 62.995 m
  5286. F
  5287. U
  5288. u
  5289. 36.7212 62.455 m
  5290. 37.0567 62.455 37.3287 62.727 37.3287 63.0625 C
  5291. 37.3287 63.0625 L
  5292. 37.3287 63.398 37.0567 63.67 36.7212 63.67 C
  5293. 35.6412 63.67 L
  5294. 35.3057 63.67 35.0337 63.398 35.0337 63.0625 C
  5295. 35.0337 63.0625 L
  5296. 35.0337 62.727 35.3057 62.455 35.6412 62.455 C
  5297. 36.7212 62.455 L
  5298. f
  5299. 36.1812 63.0625 m
  5300. F
  5301. U
  5302. u
  5303. 40.13 62.5562 m
  5304. 40.4655 62.5562 40.7375 62.8282 40.7375 63.1638 C
  5305. 40.7375 63.1638 L
  5306. 40.7375 63.4992 40.4655 63.7713 40.13 63.7713 C
  5307. 39.05 63.7713 L
  5308. 38.7145 63.7713 38.4425 63.4992 38.4425 63.1638 C
  5309. 38.4425 63.1638 L
  5310. 38.4425 62.8282 38.7145 62.5562 39.05 62.5562 C
  5311. 40.13 62.5562 L
  5312. f
  5313. 39.59 63.1638 m
  5314. F
  5315. U
  5316. u
  5317. 40.1975 60.2612 m
  5318. 40.533 60.2612 40.805 60.5332 40.805 60.8687 C
  5319. 40.805 60.8687 L
  5320. 40.805 61.2042 40.533 61.4762 40.1975 61.4762 C
  5321. 39.1175 61.4762 L
  5322. 38.782 61.4762 38.51 61.2042 38.51 60.8687 C
  5323. 38.51 60.8687 L
  5324. 38.51 60.5332 38.782 60.2612 39.1175 60.2612 C
  5325. 40.1975 60.2612 L
  5326. f
  5327. 39.6575 60.8687 m
  5328. F
  5329. U
  5330. u
  5331. 36.8225 60.1937 m
  5332. 37.158 60.1937 37.43 60.4657 37.43 60.8012 C
  5333. 37.43 60.8012 L
  5334. 37.43 61.1367 37.158 61.4087 36.8225 61.4087 C
  5335. 35.7425 61.4087 L
  5336. 35.4069 61.4087 35.135 61.1367 35.135 60.8012 C
  5337. 35.135 60.8012 L
  5338. 35.135 60.4657 35.4069 60.1937 35.7425 60.1937 C
  5339. 36.8225 60.1937 L
  5340. f
  5341. 36.2825 60.8012 m
  5342. F
  5343. U
  5344. u
  5345. 31.9962 60.2275 m
  5346. 31.9962 61.24 L
  5347. 30.9837 61.24 L
  5348. 30.9837 60.2275 L
  5349. 31.9962 60.2275 L
  5350. f
  5351. 31.4899 60.7337 m
  5352. F
  5353. U
  5354. U
  5355. U
  5356. u
  5357. 1 w
  5358. 168.5 166.5 m
  5359. N
  5360. U
  5361. %%PageTrailer
  5362. gsave annotatepage grestore showpage
  5363. %%Trailer
  5364. Adobe_IllustratorA_AI3 /terminate get exec
  5365. Adobe_typography_AI3 /terminate get exec
  5366. Adobe_customcolor /terminate get exec
  5367. Adobe_cshow /terminate get exec
  5368. Adobe_cmykcolor /terminate get exec
  5369. Adobe_packedarray /terminate get exec
  5370. %%EOF
  5371. Ë◊#ˇ ˇˇˇˇ#◊ 
  5372. d,     Helvetica
  5373. .°dONLNd !.ª+?ICOMPONENT TRIVIA #1"66# 676Æ"6Ø#"76"7Ø
  5374.     °dONLNd7!B*TThe original name for the Component Manager (as conceived of by Bruce “Of course the"L6"LذdONLNdiC!Nt* Sfeature set is frozen!” Leak) was the Thing Manager. Components were referred to as"`6 "`Ø °dONLNdΩO!Z|* V“things” (as were the QuickTime project schedules, the significance of which engineers"l6 "lØ °dONLNd[!fv* Xcouldn’t easily grasp). The use of this terminology led to one of two conditions in most"x6 "xØ °dONLNdmg!r~* VQuickTime engineers: in some, an irrepressible compulsion to make “thing” puns, and in"Ñ6 "ÑØ °dONLNdƒs!~É* Xothers, perhaps as a backlash against the former, an almost pathological aversion to the"ê6 "êØ °dONLNd!ä⁄* /use of the word “thing” in normal conversation."ú6 "úØ "∏6# ∏7∏Æ"∏Ø#"®6"®Ø, Palatino
  5375. °dONLNdMß≥^(œ6HNote that this article doesn’t spend a great deal of time explaining how°dONLNdñ≥ø* Mapplications can find and use components. We assume that you’ve invested some°dONLNd‰øÀv* effort in reading the °dONLNd˙øvÀ˛)^QuickTime Developer’s Guide°dONLNdø˛Ài)à (part of the QuickTime°dONLNd-À◊Z(Û6JDeveloper’s Kit). If you haven’t, we strongly urge you to do so, since the°dONLNdx◊„l* Developer’s Guide°dONLNdâ◊l„â)T> contains the definitive description of the Component Manager.
  5376.     °dONLNd»Ùˇ”(6SHOULD YOU WRITE A COMPONENT?
  5377. °dONLNdÊˇ b* GOK, components sound interesting, but should you write one? Why write a°dONLNd. v* Ncomponent when you can just code the functionality you need directly into your°dONLNd}#à* Qapplication or write a device driver? Here are a few reasons to choose components°dONLNdœ#/|* over the alternatives:°dONLNdÊ5+A1+•°dONLNdË57A`) BComponents are easier for applications to use. Client applications°dONLNd+A7MJ* <don’t have to know what they’re looking for before opening a°dONLNdhM7YQ* @service. This is different from device drivers, where open calls°dONLNd©Y7eT* =must provide either a driver name or a refNum. An application°dONLNdÁe7q7* 7can simply tell the Component Manager, “I’m looking for°dONLNdq7}V* ?somebody to do this for me. Is anybody available?” In addition,°dONLNd_}7â"* 5clients don’t need to set up parameter blocks or make°dONLNdïâ7ï^* Acontrol/status calls to use components. Armed with the API of the°dONLNd◊ï7°[* @component type, the caller simply makes normal function calls to°dONLNd°7≠B* 7the component, and the Component Manager does the work.°dONLNdP≥+ø1(€I•°dONLNdR≥7øW) >Components are more flexible. You can modify the behavior of a°dONLNdëø7ÀD* :component by overriding its capabilities without adversely°dONLNdÃÀ7◊U* <affecting the application. The Component Manager enables the°dONLNd    ◊7„`* Acomponent to communicate its capabilities to clients dynamically.°dONLNdKÈ+ı1(I•°dONLNdMÈ7ı]) ?Components allow you to design more flexible applications. They°dONLNdçı7]* Ccan be used to divide the functional aspects of an application into°dONLNd—7
  5378. N* =parts. For example, a word processing application might use a°dONLNd    
  5379. 7:* 8spelling checker component, a thesaurus component, and a°dONLNd    H7%>* 8grammar checker component. If the thesaurus component is x4x&,Times
  5380. ({) 
  5381. +
  5382. 9
  5383. (Ú*1TECHNIQUES FOR WRITING AND DEBUGGING COMPONENTS  
  5384. )”
  5385. December 1992ˇÑ◊#ˇ ˇˇˇˇ#◊ 
  5386. d, Palatino
  5387. .°dONLNdµ$–+”@>updated, the application code doesn’t have to change at all. A°dONLNd?$µ0fl* @user can simply replace the old thesaurus component with the new°dONLNdÄ0µ<«* one.°dONLNdÖB©NØ(j«•°dONLNdáBµN”) =Components are easier to implement than device drivers. There°dONLNd≈NµZ⁄* Bare no declaration structures, driver headers, assembly code glue,°dONLNdZµfÃ* >installation INITs, or any of the peculiarities that come with°dONLNdGfµr˘* device drivers.°dONLNdWx©ÑØ(†«•°dONLNdYxµÑÕ) =Components are easier to debug than device drivers. No longer°dONLNdóѵêÿ* Bwill you be walking the unit table to find your driver so that you°dONLNd⁄êµú‡* Dcan set a breakpoint at your control call dispatcher. You can easily°dONLNdúµ®›* Band effectively debug your code using a source-level debugger such°dONLNdb®µ¥R* as Symantec’s THINK C Debugger.°dONLNdÇ¿ñÃ(Ë¥NNow that you know the advantages of components, you have to decide whether the°dONLNd—Ãñÿ
  5388. * Tfunctionality you need is a good candidate for a component. To do this, ask yourself°dONLNd&ÿñ‰◊* the following:°dONLNd5Í©ˆØ+•°dONLNd7͵ˆ÷) ADo I anticipate reusing this functionality in other applications?°dONLNdyˆµ≠* 5Components are ideal for providing services that many°dONLNdص* applications can use.°dONLNd≈© Ø(<«•°dONLNd«µ ∞) 8Do I anticipate having to modify certain aspects of this°dONLNd µ,¡* <functionality in the future? Functionality encapsulated in a°dONLNd=,µ8Ã* <component can be extended or modified without disturbing the°dONLNdz8µDE* !original interface specification.°dONLNdúJ©VØ(r«•°dONLNdûJµV–) AIs there a benefit to users in establishing a common API for this°dONLNd‡Vµb”* Afunctionality, so that other developers can use or extend it? You°dONLNd"bµnæ* ;might want to be able to allow third parties to extend your°dONLNd^nµz›* ?application without having to expose detailed information about°dONLNdûzµÜ⁄* Ayour application’s internal data structures. For example, many of°dONLNd‡ܵíÿ* ?the “plug-in” modules for today’s popular graphics applications°dONLNd íµûz* *could easily be implemented as components.°dONLNdK™ñ∂(“¥PA “yes” to more than one of these questions means that components are probably a°dONLNdú∂ñ¬
  5389. * Tgood approach for your next product. But you still have one last question to answer:°dONLNdÒ¬ñŒˇ* Nhas someone else already written a component that solves your problem? To find°dONLNd@Œñ⁄ * Nout, you need to contact Apple’s Component Registry group (AppleLink REGISTRY)°dONLNdè⁄ñÊ* Pand ask them. These folks maintain a database of all registered component types,°dONLNd‡ÊñÚ * Ssubtypes, and manufacturers, as well as the corresponding APIs (if they’re publicly°dONLNd4Úñ˛—* Cavailable). A check with the Registry is mandatory for anyone who’s°dONLNdx˛ñ
  5390. 7* "contemplating writing a component.°dONLNdúñ"    *VIf after all this you find that you’re still about to embark into uncharted territory,°dONLNdÛ"ñ.ê* 7read on, and we’ll endeavor to illuminate your passage. xBx/,     Helvetica
  5391. ({% 
  5392. +
  5393. 10
  5394. +md)e)v)e)l)o)p)  
  5395. )
  5396. December 1992ˇî6◊#ˇ ˇˇˇˇ#◊ 
  5397. d,     Helvetica
  5398. .°dONLNd !.ª+?ICOMPONENT TRIVIA #2"62# 636("6)#"72"7)
  5399.     °dONLNd6!A˘*4The original component type for the sequence grabber°dONLNdJA!L˙* 5component was, logically enough, 'grab'. The engineer°dONLNdÄL!Wˆ* 5primarily responsible for the sequence grabber, Peter°dONLNd∂W!bÎ* 2Hoddie, requires massive infusions of Diet Coke to°dONLNdÈb!m¯* 8function properly. During a particularly intense bout of°dONLNd"m!x* 6engineering mania, the Diet Coke supply was exhausted;°dONLNdYx!ÉÌ* /unbeknownst to anyone, Peter became temporarily°dONLNdã6A(];4tdyslexic and changed the sequence grabber component°dONLNd¿ALÎ* 4type to 'barg'. The change was never noticed, and it°dONLNdıLW›* /caused no real harm, other than the wasted time°dONLNd%Wbˇ* :developers spent trying to figure out what 'barg' might be°dONLNd`bm˛* 4an acronym for (Boffo Audio Reverb Gadget? Bodacious°dONLNdïmxÍ* 1Analog Reference Gizmo?). Peter’s brain has since°dONLNd«xÉπ* *returned to its (relatively) normal state."L2`"≠2# ≠3≠,"≠- ≠.≠("L)`"≠)#
  5400. °dONLNdÙ°Ø√( 6COMPONENT BASICS 101, Palatino
  5401. °dONLNd    ≥øâ*OClient applications use the Component Manager to access components. As shown in°dONLNdYøÀv* KFigure 2, the Component Manager acts as a mediator between an application’s°dONLNd•À◊Ñ* Rrequests for component services and a component’s execution of those requests. The°dONLNd¯◊„í* Component Manager uses a °dONLNd◊í„Ë)zcomponent instance°dONLNd#◊Ë„~)V  to determine which component is°dONLNdD„Ôê( 6Vneeded to satisfy an application’s request for services. An instance can be thought of°dONLNdõÔ˚l* Kas an application’s connection to a component. We’ll have more to say about°dONLNdÁ˚ö* component instances later on.
  5402. 46‘í"46°d
  5403. ONLNfH"‘í°d
  5404. ONLNfp∏†Ç†é
  5405. 43546ò,@]@]46tí’’ ‡˛¿ÌÒ
  5406. |Ês;ÛòÏ¿Ò
  5407. ‘ôT©⁄ç2ÄÒ
  5408. ‘ôW©jµ>ÄÒ
  5409. ‘ôT)J•0Ä    „TÊS)zúÏÄ
  5410. Óĸ Ô
  5411. Óĸ¿Ô’@ Ù
  5412. `ÓùL‹Œ(åĢç«@‹ÍfÊ‚ÄÔSRm*)˘IÄröìi°Ó>SQ≠*(ûĢüIA≤öçi†ÄÔ"SS-*(P@˘QI!2öôi†@Ô#ùLÏ 8åĢçG@¸Ígf†ÄÔ ÄÎ ÄÎ’8˝F0ıѸ
  5413. Dfl9úŒΔ<Ê;`¸
  5414. ô‘…çòÃ˘ÃÊÊ
  5415. A5&U*F6£L¿¸
  5416. &U0ÜQ2©2©¢
  5417. A5&UÍEZ≠O¿¸
  5418. >UËÜQ©2Ø¢
  5419. E5&U
  5420. ER©L@¸
  5421. "UÜQ2©2®¢
  5422. 8’9î Dûß;@¸
  5423. ‹»Öêéö¢˛ ¸˘@˝Ì˛ ¸0˘@˝Ì’ ˝˘ÄĈIJ˛%lòÃ˚çΔÊ˙”õôΔcõ9ò˙    MÛôÃÏ2≥Sbˇ$2&I2™SI¢˘“••BíT¶P˙    ReR§J×îˇ$2'…™SO¢˘“°•BíTß–˙    Re^§y|QÚˇ$2&    2™SH¢˘“••BíT¶˙    SReP§Bƒ—Ŏ$,àôçF¢˘ÚôôBcì9ê˙    çSôL§2≥qbˇÚ ˜¯Ú ˜¯’˝ (ˆ ¯ ˝"    3sò‹‹é3(˙ÕÛçÃÏl¿˘Nng Ã3ú˝#    L“•-4íI®˚3RSR§2ĢJñïl§˝#    D“Ω
  5424. 46íF®˚RS^§2ĢJÜï¨j§˝#    L“°-4&íL®˚3RSP§2ĢJñï,J§˝"    3RòÑé3®˙ÕSçL§,Ģ fe Ï:ú˝ÔËÔË’¸˜Ù˝†¸    3|„s;qπ∏˙ Δ≠gˆnüÃ    L‘î‘©
  5425. RZh˚+)•ïˆñï ì†¸    D‘î◊©
  5426. Rh˚Â˕ïû    L‘î‘)
  5427. RZh˚     •ïˆÜïêT†¸    3T„S)Qô©˙ ΔÂe@˜gïåú®¸˛ÄŸ˛ÄŸ’’’’’’’’’ò,@Ä]@Ä]t6¥í’’¯ˇÄ¸˘ˇ˛˚˘ˇ¯ˇ¯ˇÄ¸˘ˇ˛˚˘ˇ¯ˇ¯ˇ‡¸¯ˇÄ¸˘ˇ˛ˇ¯ˇ‡¸¯ˇÄ¸˘ˇ˛ˇ¯ˇ‡¸¯ˇÄ¸˘ˇ˛ˇ¯ˇ‡¸¯ˇÄ¸˘ˇ˛ˇ¯ˇ‡¸¯ˇÄ¸˘ˇ˛ˇ¯ˇ‡¸¯ˇÄ¸˘ˇ˛ˇ¯ˇ‡¸¯ˇÄ¸˘ˇ˛ˇ¯ˇ‡¸¯ˇÄ¸˘ˇ˛ˇ¯ˇ‡¸¯ˇÄ¸˘ˇ˛ˇ¯ˇ‡¸¯ˇÄ¸˘ˇ˛ˇ¯ˇ‡¸¯ˇÄ¸˘ˇ˛ˇ¯ˇ‡¸¯ˇÄ¸˘ˇ˛ˇ¯ˇ‡¸¯ˇÄ¸˘ˇ˛ˇ¯ˇ‡¸¯ˇÄ¸˘ˇ˛ˇ¯ˇ‡¸¯ˇÄ¸˘ˇ˛ˇ¯ˇ‡¸¯ˇÄ¸˘ˇ˛ˇ¯ˇ‡¸¯ˇÄ¸˘ˇ˛ˇ¯ˇ‡¸¯ˇÄ¸˘ˇ˛ˇ¯ˇ‡¸¯ˇÄ¸˘ˇ˛ˇ¯ˇ‡¸¯ˇÄ¸˘ˇ˛ˇ¯ˇ‡¸¯ˇÄ¸˘ˇ˛ˇ¯ˇ‡¸¯ˇÄ¸˘ˇ˛ˇ¯ˇ‡¸¯ˇÄ¸˘ˇ˛ˇ¯ˇ‡¸¯ˇÄ¸˘ˇ˛ˇ¯ˇ‡¸¯ˇÄ¸˘ˇ˛ˇ¯ˇ‡¸¯ˇÄ¸˘ˇ˛ˇ¯ˇ‡¸¯ˇÄ¸˘ˇ˛ˇ¯ˇ‡¸¯ˇÄ¸˘ˇ˛ˇ¯ˇ‡¸¯ˇÄ¸˘ˇ˛ˇ¯ˇ‡¸¯ˇÄ¸˘ˇ˛ˇ¯ˇ‡¸¯ˇÄ¸˘ˇ˛ˇ¯ˇ‡¸¯ˇÄ¸˘ˇ˛ˇ¯ˇ‡¸¯ˇÄ¸˘ˇ˛ˇ¯ˇ‡¸¯ˇÄ¸˘ˇ˛ˇ¯ˇ‡¸¯ˇÄ¸˘ˇ˛ˇ¯ˇ‡¸¯ˇÄ¸˘ˇ˛ˇ¯ˇ‡¸¯ˇÄ¸˘ˇ˛ˇ¯ˇ‡¸¯ˇÄ¸˘ˇ˛ˇ¯ˇ‡¸¯ˇÄ¸˘ˇ˛ˇ¯ˇ‡¸¯ˇÄ¸˘ˇ˛ˇ¯ˇ‡`˛¯ˇÅIJ ˘ˇ˛ˇ¯ˇ·‡˛„¯ˇáIJ˘ˇ˛ˇ¯ˇÁ¸ˇ˚¯ˇü˝Ô˘ˇ˛ˇ¯ˇÔ¿˛˚¯ˇø¸ˇÔ˘ˇ˛ˇ¯ˇ„‡˛„¯ˇèIJè˘ˇ˛ˇ¯ˇ‡`˛¯ˇÉIJ ˘ˇ˛ˇ¯ˇ‡¸¯ˇÄ¸˘ˇ˛ˇ¯ˇ‡¸¯ˇÄ¸˘ˇ˛ˇ¯ˇ‡¸¯ˇÄ¸˘ˇ˛ˇ¯ˇ‡¸¯ˇÄ¸˘ˇ˛ˇ¯ˇ‡¸¯ˇÄ¸˘ˇ˛ˇ¯ˇ‡¸¯ˇÄ¸˘ˇ˛ˇ¯ˇ‡¸¯ˇÄ¸˘ˇ˛ˇ¯ˇ‡¸¯ˇÄ¸˘ˇ˛ˇ¯ˇ‡¸¯ˇÄ¸˘ˇ˛ˇ¯ˇ‡¸¯ˇÄ¸˘ˇ˛ˇ¯ˇ‡¸¯ˇÄ¸˘ˇ˛ˇ¯ˇ‡¸¯ˇÄ¸˘ˇ˛ˇ¯ˇ‡¸¯ˇÄ¸˘ˇ˛ˇ¯ˇ‡¸¯ˇÄ¸˘ˇ˛ˇò,Ć]Ć]¥6‘í¯ˇ‡¸¯ˇÄ¸˘ˇ˛ˇ¯ˇ‡¸¯ˇÄ¸˘ˇ˛ˇ¯ˇ‡¸¯ˇÄ¸˘ˇ˛ˇ¯ˇ‡¸¯ˇÄ¸˘ˇ˛ˇ¯ˇ‡¸¯ˇÄ¸˘ˇ˛ˇ¯ˇ‡¸¯ˇÄ¸˘ˇ˛ˇ¯ˇ‡¸¯ˇÄ¸˘ˇ˛ˇ¯ˇ‡¸¯ˇÄ¸˘ˇ˛ˇ¯ˇ‡¸¯ˇÄ¸˘ˇ˛ˇ¯ˇ‡¸¯ˇÄ¸˘ˇ˛ˇ¯ˇ‡¸¯ˇÄ¸˘ˇ˛ˇ¯ˇ‡¸¯ˇÄ¸˘ˇ˛ˇ¯ˇ‡¸¯ˇÄ¸˘ˇ˛ˇ¯ˇ‡¸¯ˇÄ¸˘ˇ˛ˇ¯ˇ‡¸¯ˇÄ¸˘ˇ˛ˇ¯ˇ‡¸¯ˇÄ¸˘ˇ˛ˇ¯ˇ‡¸¯ˇÄ¸˘ˇ˛ˇ¯ˇ‡¸¯ˇÄ¸˘ˇ˛ˇ¯ˇ‡¸¯ˇÄ¸˘ˇ˛ˇ¯ˇ‡¸¯ˇÄ¸˘ˇ˛ˇ¯ˇ‡¸¯ˇÄ¸˘ˇ˛ˇ¯ˇ‡¸¯ˇÄ¸˘ˇ˛ˇ¯ˇ‡¸¯ˇÄ¸˘ˇ˛ˇ¯ˇ‡¸¯ˇÄ¸˘ˇ˛ˇ¯ˇ‡¸¯ˇÄ¸˘ˇ˛ˇ¯ˇ‡¸¯ˇÄ¸˘ˇ˛ˇ¯ˇ‡¸¯ˇÄ¸˘ˇ˛ˇ¯ˇ‡¸¯ˇÄ¸˘ˇ˛ˇ¯ˇ‡¸¯ˇÄ¸˘ˇ˛ˇ?˘ˇ‡˚¯ˇÄ¸˘ˇ˛ˇ?˘ˇ‡˚¯ˇÄ¸˘ˇ˛ˇ’òÅ^@]HHQoD ≠IJˇˇˇˇˇˇˇˇˇˇÃÃˇˇˇˇôôˇˇˇˇffˇˇˇˇ33ˇˇˇˇˇˇÃÃˇˇˇˇÃÃÃÃˇˇÃÃôô    ˇˇÃÃff
  5428. ˇˇÃÃ33 ˇˇÃà ˇˇôôˇˇ
  5429. ˇˇôôÃÃˇˇôôôôˇˇôôffˇˇôô33ˇˇôôˇˇffˇˇˇˇffÃÃˇˇffôôˇˇffffˇˇff33ˇˇffˇˇ33ˇˇˇˇ33ÃÃˇˇ33ôôˇˇ33ffˇˇ3333ˇˇ33ˇˇˇˇˇˇÃàˇˇôô!ˇˇff"ˇˇ33#ˇˇ$ÃÃˇˇˇˇ%ÃÃˇˇÃÃ&ÃÃˇˇôô'ÃÃˇˇff(ÃÃˇˇ33)ÃÃˇˇ*ÃÃÃÃˇˇ+ÃÃÃÃÃÃ,ÃÃÃÃôô-ÃÃÃÃff.ÃÃÃÃ33/ÃÃÃÃ0ÃÃôôˇˇ1ÃÃôôÃÃ2ÃÃôôôô3ÃÃôôff4ÃÃôô335ÃÃôô6ÃÃffˇˇ7ÃÃffÃÃ8ÃÃffôô9ÃÃffff:ÃÃff33;ÃÃff<ÃÃ33ˇˇ=ÃÃ33ÃÃ>ÃÃ33ôô?ÃÃ33ff@ÃÃ3333AÃÃ33BÃÃˇˇCÃÃÃÃDÃÃôôEÃÃffFÃÃ33GÃÃHôôˇˇˇˇIôôˇˇÃÃJôôˇˇôôKôôˇˇffLôôˇˇ33MôôˇˇNôôÃÃˇˇOôôÃÃÃÃPôôÃÃôôQôôÃÃffRôôÃÃ33SôôÃÃTôôôôˇˇUôôôôÃÃVôôôôôôWôôôôffXôôôô33YôôôôZôôffˇˇ[ôôffÃÃ\ôôffôô]ôôffff^ôôff33_ôôff`ôô33ˇˇaôô33ÃÃbôô33ôôcôô33ffdôô3333eôô33fôôˇˇgôôÃÃhôôôôiôôffjôô33kôôlffˇˇˇˇmffˇˇÃÃnffˇˇôôoffˇˇffpffˇˇ33qffˇˇrffÃÃˇˇsffÃÃÃÃtffÃÃôôuffÃÃffvffÃÃ33wffÃÃxffôôˇˇyffôôÃÃzffôôôô{ffôôff|ffôô33}ffôô~ffffˇˇffffÃÃÄffffôôÅffffffÇffff33ÉffffÑff33ˇˇÖff33ÃÃÜff33ôôáff33ffàff3333âff33äffˇˇãffÃÃåffôôçfffféff33èffê33ˇˇˇˇë33ˇˇÃÃí33ˇˇôôì33ˇˇffî33ˇˇ33ï33ˇˇñ33ÃÃˇˇó33ÃÃÃÃò33ÃÃôôô33ÃÃffö33ÃÃ33õ33ÃÃú33ôôˇˇù33ôôÃÃû33ôôôôü33ôôff†33ôô33°33ôô¢33ffˇˇ£33ffÃç33ffôô•33ffff¶33ff33ß33ff®3333ˇˇ©3333ÃÙ3333ôô´3333ff¨333333≠3333Æ33ˇˇØ33ÃÃ∞33ôô±33ff≤3333≥33¥ˇˇˇˇµˇˇÃÃ∂ˇˇôô∑ˇˇff∏ˇˇ33πˇˇ∫ÃÃˇˇªÃÃÃúÃÃôôΩÃÃffæÃÃ33øÃÿôôˇˇ¡ôôÃìôôôô√ôôffƒôô33≈ôôΔffˇˇ«ffÃûffôô…ffff ff33ÀffÃ33ˇˇÕ33ÃÃŒ33ôôœ33ff–3333—33“ˇˇ”ÃÑôô’ff÷33◊ÿˇˇˇŸ˘`˘`˘`⁄Ú–Ú–Ú–€Ï@Ï@Ï@‹Â∞Â∞Â∞›fl fl fl fiÿêÿêÿêfl“““‡ÀpÀpÀp·ƒ‡ƒ‡ƒ‡‚æPæPæP„∑¿∑¿∑¿‰±0±0±0™†™†™†Ê§§§ÁùÄùÄùÄËñññÈê`ê`ê`Íâ–â–â–ÎÉ@É@É@Ï|∞|∞|∞Ìv v v ÓoêoêoêÔiiibpbpbpÒ[‡[‡[‡ÚUPUPUPÛN¿N¿N¿ÙH0H0H0ıA†A†A†ˆ;;;˜4Ä4Ä4į---˘'`'`'`˙ – – –˚@@@¸∞∞∞˝
  5430.  
  5431.  
  5432.  ˛êêê@]46tí'ÅÅ£ÅÅ£Å˘ˇ˛ˇ›ˇ˛ˇˇ˛ˇ˛Å›OÅ˙ˇ˛ˇˇˇ¸ˇ˛ˇˇˇ˛ˇˇˇ˛ˇˇˇ˛ˇˇ˛˝ˇ˛ˇˇˇ˛˛ˇˇˇˇˇÅıQÅ˙ˇ¸"ˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ˛ˇˇ˛ˇˇˇˇˇˇ˛ ˇˇˇˇˇˇˇÅÙQÅ˙˛¸"ˇˇˇ˛ˇˇ˛ˇ˛ˇ˛ˇˇ˛ˇˇˇ˛˛˛ˇ˛ˇˇˇˇˇˇ˛ˇ˛ˇ˛˛ˇˇÅÙQÅ˙ˇ˛ˇˇˇˇˇˇˇˇˇˇˇˇˇ˝ˇˇˇ˛ˇˇˇˇˇˇˇˇˇˇˇˇ˝ˇÅÙOÅ˘˛ˇ˛    ˇˇˇˇˇ˛ˇˇˇˇˇˇˇˇˇˇ˛ˇˇ˝ˇˇˇ˛ˇ˛ˇˇˇˇÅÙÅÈˇ–ˇÅÓÅÈˇ“ˇˇÅÌÅÅ£&ıˇ˜˛ˇ˜ˇˇê˛Ìˇˇ˜ˇˇˆˇÅÍyˆˇ˝ˇ˛ˇ ˇˇˇˇˇˇ˛ˇˇˇ˛ˇ˛ˇˇ˛ˇ˛ˇˇˇ∫ˇ˛ˇˇ˛ˇ˛˛ˇˇ˚ˇˇ˛ˇ˛ˇ ˇˇˇˇˇˇ˛ˇˇˇ˛ˇ˛ˇˇÅÏyˆ#ˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ˛ˇˇˇ˛ˇˇˇ∫ˇ˛
  5433. ˇˇˇˇˇˇˇ˘˛ˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ˝ˇÅÎ}˜˛ˇ˛ˇ˛ˇˇˇ˛ˇ˛ˇˇˇˇ˛ˇˇˇˇ˛ˇˇ˛ˇˇˇ˛ˇˇ∫ˇˇˇ˛ˇˇ˛ˇˇ˛¸ˇˇˇˇˇˇˇˇˇˇ˛ˇ˛ˇ˛ˇˇˇˇˇ¸ˇÅÏ|˜ˇ˛ ˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ˛ˇˇ˝ˇˇ¸ˇ∫ˇˇ˛ ˇˇˇˇˇ˝#ˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ˚ˇÅÌu˜ˇ˛˛ˇ˛ˇ    ˇˇˇˇ˛ˇ ˇˇˇˇˇˇ˛˛ˇ˛ˇ˛ˇˇˇ∫ˇ˛ˇˇˇˇ˛˛ˇˇ˚˚ˇ˛ˇ    ˇˇˇˇ˛ˇ
  5434. ˇˇˇˇˇˇ¸ˇÅÏÛˇ˝˛ÅÚ˛˝ˇÅÃÛˇ˝ˇÅÚˇ˝ˇÅÃÅÅ£"˜˛ˇ›˛˛˛ˇ˛ˇˇùˇ˝˛—ˇÅ˙ù¯ˇ˛ˇˇˇ¸ˇ˛ˇˇˇ˛ˇˇˇ˛ˇˇˇ˛ˇˇ˛˝ˇ˛ˇˇˇ˛˛ˇˇˇˇˇÕˇˇˇˇ˛ˇˇˇˇˇˇˇˇ˛ˇˇˇˇˇˇ˛ˇˇˇˇ¸ˇ˛ˇˇˇ˛ˇˇˇ˛ˇˇˇÅ˙ü¯ˇ¸"ˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ˛ˇˇ˛ˇˇˇˇˇˇ˛ ˇˇˇˇˇˇˇÃˇˇˇˇˇˇˇˇˇˇ˝ˇ˝ˇˇˇˇ˛#ˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ˛ˇÅ˙†¯ˇ¸˛ˇ˛ˇ˛ˇˇˇˇ˛ˇ˛˛ˇˇˇˇ˛ˇ˛ˇ˛ˇˇˇˇˇˇ˛ˇ˛ˇ˛ˇˇÃ˛ˇ˛˛ˇˇ˛ˇ˛˛ˇˇ˛ˇ˝ˇˇˇ˛˛˛˛˛ˇˇˇˇ˛ˇ˛ˇˇˇ˛ˇ˛ˇˇ˛ˇÅ˙ü¯ˇ˛ˇˇˇˇˇˇˇˇˇˇˇˇˇ˝ˇˇˇ˛ˇˇˇˇˇˇˇˇˇˇˇˇ˛ˇÃˇˇ˛    ˇˇˇˇˇ¸ˇˇ˝ˇˇˇˇ˛ˇˇˇˇˇˇˇˇˇˇˇˇˇˇ˛ˇˇ˛ˇÅ˙ù˜˛ˇ˛    ˇˇˇˇˇ˛ˇˇˇˇˇˇˇˇˇˇ˛ˇˇ˝ˇˇˇ˛ˇ˛ˇˇˇˇÃˇ˛ˇˇ˛ˇ˛ˇˇˇˇ˛ˇ˝ˇˇˇˇ˝ˇˇˇˇˇˇˇ˛ˇˇˇˇˇˇˇˇˇ˛ˇÅ˙Áˇ–ˇΩ˛‘ˇÅ„Áˇ“ˇˇºˇ‘ˇÅ„ÅÅ£)˜ˇˇÿˇ¿ˇÛ˛ˇÙˇ¢ˇ˛ˇ›ˇË˛Îƒ¯ˇˇˇˇ¸˛ˇˇˇˇˇ˛ˇˇˇˇ¸ˇ˛ˇ˛ˇˇ˛ˇ˛ˇˇ˛ˇˇˇ¡˛ˇˇ˛ˇˇˇ˛ˇˇˇ˛ˇ˛ˇˇˇˇ˛˛ˇˇˇˇˇ˛ˇˇˇˇˇ¡ˇ˛ˇˇˇ¸ˇ˛ˇˇˇ˛ˇˇˇ˛ˇˇˇ˝ˇˇˇˇˇˇˇˇˇˇˇˇˇˇ˛ˇÚ ˜ˇˇˇ˛0ˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ˛ˇ¿ˇˇˇˇˇˇˇˇˇˇˇˇˇ˝ˇˇˇˇˇˇˇˇˇˇˇˇˇ¿ˇ¸"ˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ˛ˇˇˇˇˇˇˇˇˇˇ˛ˇˇˇˇÒ ˜ˇˇˇ˛ˇ˛˛ˇ˛ˇˇ˛ˇˇˇˇˇˇ˛ˇˇˇ˛ˇ˛˛ˇˇ˛ˇ¿
  5435. ˇ˛ˇˇˇˇ˝
  5436. ˇˇˇ˛ˇ˛˝ˇˇˇˇ˛ˇ˛ˇˇ˛˛ˇ˛ˇ¿˛¸"ˇˇˇ˛ˇˇ˛ˇ˛ˇ˛ˇˇ˛ˇˇˇ˛˛˛˛ˇˇ˛˛ˇ˛˛˛ˇ˛ˇˇ˛ˇˇˇÚΔ˜ˇˇˇ˛ˇˇˇ¸ ˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ˛ˇˇ˛ˇ¿ˇˇˇˇˇˇˇˇˇˇˇˇˇ˝ˇˇˇˇˇˇˇˇˇˇˇ˝ˇ¿ˇ˛ˇˇˇˇˇˇˇˇˇˇˇˇˇ˝ˇˇˇ˛ˇ˝ˇˇˇ˛ˇˇˇˇ˛ˇˇ˚ˇÛ¡˜ˇˇˇ¸˛ˇˇˇ˛ˇ˛
  5437. ˇˇˇˇˇˇˇ˛ˇ˛ˇˇˇˇ˛ˇˇˇˇ˛ˇ¿˝ˇˇˇˇˇˇˇˇˇˇˇ˝ˇˇˇ˛˛ˇˇˇˇ˛ˇˇˇˇø˛ˇ˛    ˇˇˇˇˇ˛ˇˇˇˇˇˇˇˇˇˇ˝ˇˇˇˇˇˇˇˇ˛ˇ˛ˇˇˇ˛ˇÚÏˇÈˇÇˇˆˇ¶ˇ∫ÓˇˇËˇÇˇˆˇ¶ˇ∫ÅÅ£+›ˇ˛Èˇˆˇˇ°˛˝ˇÆˇÛ˛ˇÏˇ˛Ú˛·´˜ˇˇˇˇ˛ˇ˛ˇˇˇ˛ˇˇ˛ˇˇˇ˛ˇ¸ˇˇ˛ˇ˛˛ˇ˛
  5438. ˇˇˇˇˇˇΔˇˇˇˇ¸ˇ˛ˇ˛ˇˇ˛ˇˇˇ˛ˇˇˇ˛ˇˇˇˇˇˇ∂˛ˇˇ˛ˇˇˇ˛ˇˇˇ˛ˇ˝    ˇˇˇˇˇˇ˝ˇˇ˛ˇ˛ˇ·≤¯$ˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ˚˛ˇˇˇˇˇˇˇˇˇˇ«&ˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ˝ˇˇˇˇ¥ˇˇˇˇˇˇˇˇˇˇˇˇˇ˛
  5439. ˇˇˇˇˇˇ¸
  5440. ˇˇˇˇˇˇ·µ¯ˇ˛ˇˇˇ˛ˇˇˇ˛ˇˇ˛˝    ˇˇ˛ˇ˛ˇ˝ˇ˛ˇˇˇ˛ˇˇ˛ˇˇˇˇˇ«˛˛˛ˇ˛ˇ˛ˇˇ˛ˇ˛ˇ˛˛ˇˇˇˇ˝ˇ˛ˇˇ¥
  5441. ˇ˛ˇˇˇˇ˝
  5442. ˇˇˇ˛ˇ˛˛˛˛˛ˇˇˇˇ˛ ˇˇˇˇˇˇˇ·µ¯ˇˇˇˇˇˇˇˇˇ˝ˇˇˇˇˇˇˇˇ˝ˇˇˇˇˇˇˇˇˇˇˇˇ«ˇˇˇˇˇˇˇˇˇˇˇˇˇˇ˝ˇˇˇ˝ˇˇˇˇ¥ˇˇˇˇˇˇˇˇˇˇˇˇˇ˛
  5443. ˇˇˇˇˇˇ˛ ˇˇˇˇˇˇ·©˜ˇˇˇˇˇˇˇˇˇˇ˛
  5444. ˇˇˇˇˇˇˇˇ¸˝ˇˇ˛˛ˇ˛ˇˇ˛ˇˇˇΔ
  5445. ˇˇˇˇˇˇˇ˛ˇ˛ˇˇˇˇˇˇˇˇˇ˝ˇˇˇˇ¥˝ˇˇˇˇˇˇˇˇˇˇˇ˝ˇˇ˛ˇˇˇ˝˛ˇˇˇ˛ˇ·
  5446. ÅΡÅ∫
  5447. ÅΡÅ∫ÅÅ£“˛˝ˇÛ˛ˇ©ˇ˛îˇflˇˇ÷ê˜ˇˇˇˇ¸ˇ˛ˇ˛ˇˇ˛ˇˇˇ˛ˇˇˇ˛˛ˇˇ˛ˇ˛ˇˇ˛ˇˇˇ˛ˇΔ    ˇˇˇˇˇˇ˛ˇˇˇˇˇˇˇˇˇ˛ˇ§ˇˇˇˇ˛ˇˇ¸ˇ˛ˇ˝ˇˇˇˇˇˇˇ˛ˇ÷õ¯&ˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ˝ˇˇˇˇˇˇˇˇˇˇˇˇˇ« ˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ§ˇˇˇˇˇˇˇˇˇˇ¸ˇˇˇˇ˛ˇˇˇˇ÷õ¯˛˛˛ˇ˛ˇ˛ˇˇ˛ˇ˛ˇ˛˛ˇˇˇˇ˝
  5448. ˇ˛ˇ˛ˇˇ˝    ˇˇˇ˛ˇˇ«
  5449. ˇˇ˛ˇ˛ˇˇ˛ˇˇ˛ˇˇ˛ˇˇˇ˛ˇ§˛ˇ˛ˇˇ˛ˇˇˇ˛ˇ˛ˇ˝ˇˇˇ˛ˇˇˇ˛ˇˇ÷ñ¯ˇˇˇˇˇˇˇˇˇˇˇˇˇˇ˝ˇˇˇ˝ˇˇˇˇˇˇˇˇˇˇˇˇˇ«ˇ˝ˇˇˇ˝ˇˇˇˇˇˇˇˇˇˇ§ˇˇ˝
  5450. ˇˇˇˇˇˇ˝ˇ˛ˇˇ¸    ˇˇˇˇˇ÷ù˜
  5451. ˇˇˇˇˇˇˇ˛ˇ˛ˇˇˇˇˇˇˇˇˇ˝˝ˇˇˇ˛ˇˇˇˇˇˇˇˇˇ…    ˇˇˇˇˇˇ˛ˇˇ˛ˇˇˇˇˇˇˇˇ¶ˇ˛ˇˇ˝ˇˇˇˇ˛ˇ˝ˇ˛ˇˇˇ˛ˇˇˇˇÿ
  5452. ÈˇÅź
  5453. ÈˇÅźÅÅ£ÅÅ£ÅÅ£ÅÅ£ÅÅ£ÅÅ£ÅÅ£ÅÅ£ÅÅ£òÅ^@Ä]HHQo@ ÆÄ˛ˇˇˇˇˇˇˇˇˇˇÃÃˇˇˇˇôôˇˇˇˇffˇˇˇˇ33ˇˇˇˇˇˇÃÃˇˇˇˇÃÃÃÃˇˇÃÃôô    ˇˇÃÃff
  5454. ˇˇÃÃ33 ˇˇÃà ˇˇôôˇˇ
  5455. ˇˇôôÃÃˇˇôôôôˇˇôôffˇˇôô33ˇˇôôˇˇffˇˇˇˇffÃÃˇˇffôôˇˇffffˇˇff33ˇˇffˇˇ33ˇˇˇˇ33ÃÃˇˇ33ôôˇˇ33ffˇˇ3333ˇˇ33ˇˇˇˇˇˇÃàˇˇôô!ˇˇff"ˇˇ33#ˇˇ$ÃÃˇˇˇˇ%ÃÃˇˇÃÃ&ÃÃˇˇôô'ÃÃˇˇff(ÃÃˇˇ33)ÃÃˇˇ*ÃÃÃÃˇˇ+ÃÃÃÃÃÃ,ÃÃÃÃôô-ÃÃÃÃff.ÃÃÃÃ33/ÃÃÃÃ0ÃÃôôˇˇ1ÃÃôôÃÃ2ÃÃôôôô3ÃÃôôff4ÃÃôô335ÃÃôô6ÃÃffˇˇ7ÃÃffÃÃ8ÃÃffôô9ÃÃffff:ÃÃff33;ÃÃff<ÃÃ33ˇˇ=ÃÃ33ÃÃ>ÃÃ33ôô?ÃÃ33ff@ÃÃ3333AÃÃ33BÃÃˇˇCÃÃÃÃDÃÃôôEÃÃffFÃÃ33GÃÃHôôˇˇˇˇIôôˇˇÃÃJôôˇˇôôKôôˇˇffLôôˇˇ33MôôˇˇNôôÃÃˇˇOôôÃÃÃÃPôôÃÃôôQôôÃÃffRôôÃÃ33SôôÃÃTôôôôˇˇUôôôôÃÃVôôôôôôWôôôôffXôôôô33YôôôôZôôffˇˇ[ôôffÃÃ\ôôffôô]ôôffff^ôôff33_ôôff`ôô33ˇˇaôô33ÃÃbôô33ôôcôô33ffdôô3333eôô33fôôˇˇgôôÃÃhôôôôiôôffjôô33kôôlffˇˇˇˇmffˇˇÃÃnffˇˇôôoffˇˇffpffˇˇ33qffˇˇrffÃÃˇˇsffÃÃÃÃtffÃÃôôuffÃÃffvffÃÃ33wffÃÃxffôôˇˇyffôôÃÃzffôôôô{ffôôff|ffôô33}ffôô~ffffˇˇffffÃÃÄffffôôÅffffffÇffff33ÉffffÑff33ˇˇÖff33ÃÃÜff33ôôáff33ffàff3333âff33äffˇˇãffÃÃåffôôçfffféff33èffê33ˇˇˇˇë33ˇˇÃÃí33ˇˇôôì33ˇˇffî33ˇˇ33ï33ˇˇñ33ÃÃˇˇó33ÃÃÃÃò33ÃÃôôô33ÃÃffö33ÃÃ33õ33ÃÃú33ôôˇˇù33ôôÃÃû33ôôôôü33ôôff†33ôô33°33ôô¢33ffˇˇ£33ffÃç33ffôô•33ffff¶33ff33ß33ff®3333ˇˇ©3333ÃÙ3333ôô´3333ff¨333333≠3333Æ33ˇˇØ33ÃÃ∞33ôô±33ff≤3333≥33¥ˇˇˇˇµˇˇÃÃ∂ˇˇôô∑ˇˇff∏ˇˇ33πˇˇ∫ÃÃˇˇªÃÃÃúÃÃôôΩÃÃffæÃÃ33øÃÿôôˇˇ¡ôôÃìôôôô√ôôffƒôô33≈ôôΔffˇˇ«ffÃûffôô…ffff ff33ÀffÃ33ˇˇÕ33ÃÃŒ33ôôœ33ff–3333—33“ˇˇ”ÃÑôô’ff÷33◊ÿˇˇˇŸ˘`˘`˘`⁄Ú–Ú–Ú–€Ï@Ï@Ï@‹Â∞Â∞Â∞›fl fl fl fiÿêÿêÿêfl“““‡ÀpÀpÀp·ƒ‡ƒ‡ƒ‡‚æPæPæP„∑¿∑¿∑¿‰±0±0±0™†™†™†Ê§§§ÁùÄùÄùÄËñññÈê`ê`ê`Íâ–â–â–ÎÉ@É@É@Ï|∞|∞|∞Ìv v v ÓoêoêoêÔiiibpbpbpÒ[‡[‡[‡ÚUPUPUPÛN¿N¿N¿ÙH0H0H0ıA†A†A†ˆ;;;˜4Ä4Ä4į---˘'`'`'`˙ – – –˚@@@¸∞∞∞˝
  5456.  
  5457.  
  5458.  ˛êêê@Ä]t6¥í'ÅÅ£ÅÅ£˘∏ˇÃ∏ˇÃ∏ˇÊ˘HˇˇÃHˇˇÃHˇˇÈ˘Gˇ˛ˇŒGˇ˛ˇŒGˇ˛ˇÚÈ˘Gˇ˛ˇŒGˇ˛ˇŒGˇ˛ˇÚÈ˘Gˇ˛ˇŒGˇ˛ˇŒGˇ˛ˇÚÈ˘Gˇ˛ˇŒGˇ˛ˇŒGˇ˛ˇÚÈ˘Gˇ˛ˇŒGˇ˛ˇŒGˇ˛ˇÚÈ˘Gˇ˛ˇŒGˇ˛ˇŒGˇ˛ˇÚÈ˘Gˇ˛ˇŒGˇ˛ˇŒGˇ˛ˇÚÈ˘Gˇ˛ˇŒGˇ˛ˇŒGˇ˛ˇÚÈ˘Gˇ˛ˇŒGˇ˛ˇŒGˇ˛ˇÚÈ˘Gˇ˛ˇŒGˇ˛ˇŒGˇ˛ˇÚÈ˘Gˇ˛ˇŒGˇ˛ˇŒGˇ˛ˇÚÈ˘Gˇ˛ˇŒGˇ˛ˇŒGˇ˛ˇÚÈ˘Gˇ˛ˇŒGˇ˛ˇŒGˇ˛ˇÚÈ˘Gˇ˛ˇŒGˇ˛ˇŒGˇ˛ˇÚÈ˘Gˇˇˇˇˇˇ˛ˇŒˇ˛ˇ2ˇ˛ˇŒˇ˛ˇ2ˇ˛ˇÚÈ˘Gˇˇˇˇ˛ˇˇ˛ˇˇˇ˛ˇ˛ˇˇ˛ˇ˛ˇ˛ˇˇ˛ˇŒ)ˇ˛˛ˇˇˇˇ˛ˇˇ˛ˇˇˇˇ˛ˇˇ˛ˇˇ˛ˇ˛˛ˇŒˇˇˇ˛ˇ˛˛ˇ(˛ˇˇ˛˛ˇˇ˛ˇˇˇ˛ˇˇˇˇ˛ˇÚÈ˘Gˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ˛ˇŒGˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ˛ˇŒGˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ˛ˇÚ‚˘ˇ˚ˇ0ˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ˛ˇŒ.ˇˇˇˇˇˇˇˇˇˇˇˇˇ¸ˇˇˇ˛ˇŒ.ˇˇˇˇˇˇˇˇˇˇˇˇˇ¸ˇˇˇ˛ˇÚÈ˘Gˇ˛˛ˇ˛ˇ˛ˇˇˇ˛ˇ˛ˇ˛ˇ˛ˇ˛˛ˇŒGˇˇˇˇˇ˛ˇ˛ˇˇˇˇˇˇ˛˛ˇˇ˛ˇŒGˇ˛˛ˇ˛ˇ˛ˇ˛ˇˇ˛ˇˇˇˇ˛˛˛ˇÚˢˇˇ˝ˇ˛ˇ    ˇˇˇˇ˛ˇˇˇˇˇˇˇ˛ˇŒˇ˛ˇ ˇˇˇˇˇ˛ˇ#ˇˇˇˇˇˇˇˇˇ˛ˇŒˇ˛ˇ ˇˇˇˇˇ˛ˇ#ˇˇˇˇˇˇˇˇˇ˛ˇÚÈ˘Gˇˇˇ˛ˇŒGˇˇ˛ˇŒGˇˇ˛ˇÚÈ˘Gˇˇˇ˛ˇŒGˇ˛˛ˇŒGˇˇ˛ˇÚÈ˘Gˇ˛ˇŒGˇ˛ˇŒGˇ˛ˇÚÈ˘Gˇ˛ˇŒGˇˇˇˇˇ˛ˇŒGˇ˛ˇÚÈ˘Gˇ˛ˇŒGˇˇˇˇ˛ˇˇˇˇ˛ˇ˛ˇ˛ˇ˛ˇˇ˛˛ˇŒGˇ˛ˇÚÈ˘Gˇ˛ˇŒ&ˇˇˇˇˇˇˇˇˇ˛ˇˇˇˇˇ˛ˇŒGˇ˛ˇÚÁ˘Gˇ˛ˇŒˇˇˇˇ˛ˇˇˇˇˇˇˇˇˇ¸ˇ˛ˇŒGˇ˛ˇÚÈ˘Gˇ˛ˇŒGˇ˛ˇ˛ˇˇˇ˛ˇ˛ˇ˛ˇˇˇ˛ˇŒGˇ˛ˇÚÈ˘Gˇ˛ˇŒˇˇˇˇ˛ˇˇˇ˛ˇ˛ˇˇˇˇ˛ˇŒGˇ˛ˇÚÈ˘Gˇ˛ˇŒGˇˇ˛ˇŒGˇ˛ˇÚÈ˘Gˇ˛ˇŒGˇˇ˛˛ˇŒGˇ˛ˇÚÈ˘Gˇ˛ˇŒGˇ˛ˇŒGˇ˛ˇÚÈ˘Gˇ˛ˇŒGˇ˛ˇŒGˇ˛ˇÚÈ˘Gˇ˛ˇŒGˇ˛ˇŒGˇ˛ˇÚÈ˘Gˇ˛ˇŒGˇ˛ˇŒGˇ˛ˇÚÈ˘Gˇ˛ˇŒGˇ˛ˇŒGˇ˛ˇÚÈ˘Gˇ˛ˇŒGˇ˛ˇŒGˇ˛ˇÚÈ˘Gˇ˛ˇŒGˇ˛ˇŒGˇ˛ˇÚÈ˘Gˇ˛ˇŒGˇ˛ˇŒGˇ˛ˇÚÈ˘Gˇˇˇ˛ˇŒGˇ˛ˇŒGˇ˛ˇÚ΢ ˇ˝ˇ"˛ˇ˚ˇˇfiˇˇ˚Gˇ˛ˇ˚ˇˇfiˇˇ˚ˇÌˇ˛ˇÚÈ˘Gˇˇˇˇˇ˛ˇ˝˝ˇ›˝ˇ˛Gˇ˛ˇ˝˝ˇfi˝ˇ˝ˇ˛ˇÔˇˇ˛ˇÚÿ˘ ˇˇˇ˝"ˇˇ˛ˇ—ˇˇ˙ˇ¯ˇ˛ˇ¸ˇ‹˚ˇˇˇÏˇ˛ˇÚŸ˘ˇˇˇ˚!ˇˇ˛ˇ˚ˇ‹˚ˇˇ˛ˇ˝ ˇˇˇˇ˚ˇ˛ˇ–ˇˇˇˇÏˇˇ˛ˇÚŸ˘ˇ˛ˇ˘ ˇˇ˛ˇ˛¸ˇ›˝ˇ˛ˇˇ˚ ˇˇˇ˚ˇˇ˛ˇ˛¸ˇfi¸ˇ˛ˇˇÍˇ˛ˇÚÕ˘ˇˇˇˆˇˇ˛ˇ˚ˇˇfiˇˇ˚ˇˇ˙ıˇ˙ˇ˛ˇ¸˛ˇfiˇˇ˚ˇˇÍˇ˛ˇÚ¥˘ˇˇˇÙˇˇ˛ˇŒˇˇÁˇ˛ˇŒˇˇÍˇ˛ˇÚ∂˘ˇˇˇÚˇˇ˛ˇŒˇˇ˘¯ˇ¯ˇ˛ˇŒˇˇÍˇ˛ˇÚµ˘ˇˇˇˇˇ˛ˇŒˇˇ˚˜ˇ˜ˇ˛ˇŒˇ˝ˇÌˇ˛ˇÚ∫˘ˇˇˇÓˇˇ˛ˇŒˇˇ˚˜ˇˇˇ˚ˇ˛ˇŒˇˇˇˇÌˇˇ˛ˇÚ∂˘ˇˇˇÏˇˇ˛ˇŒˇˇ¸¸ˇ¯ˇ˚ˇ˛ˇŒˇˇÌ˛ˇ˛ˇÚ∑˘ˇˇˇÍˇˇ˛ˇŒˇˇ¸˛ˇ˚ˇ˛˛ˇ¸ˇ˛ˇŒˇˇÎˇ˛ˇÚ±˘ˇˇˇËˇˇ˛ˇŒˇˇ˝˝ˇ¸˘ˇ¸ˇ˛ˇŒˇˇÎˇ˛ˇÚ≥˘ˇˇˇÚ˘ˇ˝ˇˇ˛ˇŒˇˇ˝˛ˇ¸˜ˇ˝ˇ˛ˇŒˇˇÎˇ˛ˇÚº˘ˇˇˇÛˇˇ˚ˇˇ˝ˇˇ˛ˇŒˇˇ˝˛ˇ¸¸ˇ˝ˇ˝ˇ˛ˇŒˇˇÎˇ˛ˇÚΩ˘ˇˇˇıˇˇ˘ˇˇ˛ˇˇ˛ˇŒˇˇ˝˛ˇ˛˚ˇ˛˛ˇ˝ˇ˛ˇŒˇˇÎˇ˛ˇÚº˘ˇˇˇˆ˚ˇ¸ˇˇˇˇ˛ˇŒˇˇ˝˛ˇ˝˝ˇ˝˛ˇ˝ˇ˛ˇŒˇˇÎˇ˛ˇÚ∂˘ˇˇˇ˙Ùˇ¸ˇ˛ˇŒˇˇ˝˝ˇ˜˝ˇ˝ˇ˛ˇŒˇˇÎˇ˛ˇÚ∏˘ˇˇˇ˚Ùˇ˛˝ˇ˛ˇŒˇˇ˝˝ˇ˜˛ˇ¸ˇ˛ˇŒˇˇÌˇˇ˛ˇÚ∏˘ˇˇˇ˘˚ˇ˙˝ˇ˛ˇŒˇˇ¸˝ˇ˘¸ˇ˝ˇ˛ˇŒˇˇÌ˛ˇ˛ˇÚòÅ^Ć]HHQoD ØÄ˛ˇˇˇˇˇˇˇˇˇˇÃÃˇˇˇˇôôˇˇˇˇffˇˇˇˇ33ˇˇˇˇˇˇÃÃˇˇˇˇÃÃÃÃˇˇÃÃôô    ˇˇÃÃff
  5459. ˇˇÃÃ33 ˇˇÃà ˇˇôôˇˇ
  5460. ˇˇôôÃÃˇˇôôôôˇˇôôffˇˇôô33ˇˇôôˇˇffˇˇˇˇffÃÃˇˇffôôˇˇffffˇˇff33ˇˇffˇˇ33ˇˇˇˇ33ÃÃˇˇ33ôôˇˇ33ffˇˇ3333ˇˇ33ˇˇˇˇˇˇÃàˇˇôô!ˇˇff"ˇˇ33#ˇˇ$ÃÃˇˇˇˇ%ÃÃˇˇÃÃ&ÃÃˇˇôô'ÃÃˇˇff(ÃÃˇˇ33)ÃÃˇˇ*ÃÃÃÃˇˇ+ÃÃÃÃÃÃ,ÃÃÃÃôô-ÃÃÃÃff.ÃÃÃÃ33/ÃÃÃÃ0ÃÃôôˇˇ1ÃÃôôÃÃ2ÃÃôôôô3ÃÃôôff4ÃÃôô335ÃÃôô6ÃÃffˇˇ7ÃÃffÃÃ8ÃÃffôô9ÃÃffff:ÃÃff33;ÃÃff<ÃÃ33ˇˇ=ÃÃ33ÃÃ>ÃÃ33ôô?ÃÃ33ff@ÃÃ3333AÃÃ33BÃÃˇˇCÃÃÃÃDÃÃôôEÃÃffFÃÃ33GÃÃHôôˇˇˇˇIôôˇˇÃÃJôôˇˇôôKôôˇˇffLôôˇˇ33MôôˇˇNôôÃÃˇˇOôôÃÃÃÃPôôÃÃôôQôôÃÃffRôôÃÃ33SôôÃÃTôôôôˇˇUôôôôÃÃVôôôôôôWôôôôffXôôôô33YôôôôZôôffˇˇ[ôôffÃÃ\ôôffôô]ôôffff^ôôff33_ôôff`ôô33ˇˇaôô33ÃÃbôô33ôôcôô33ffdôô3333eôô33fôôˇˇgôôÃÃhôôôôiôôffjôô33kôôlffˇˇˇˇmffˇˇÃÃnffˇˇôôoffˇˇffpffˇˇ33qffˇˇrffÃÃˇˇsffÃÃÃÃtffÃÃôôuffÃÃffvffÃÃ33wffÃÃxffôôˇˇyffôôÃÃzffôôôô{ffôôff|ffôô33}ffôô~ffffˇˇffffÃÃÄffffôôÅffffffÇffff33ÉffffÑff33ˇˇÖff33ÃÃÜff33ôôáff33ffàff3333âff33äffˇˇãffÃÃåffôôçfffféff33èffê33ˇˇˇˇë33ˇˇÃÃí33ˇˇôôì33ˇˇffî33ˇˇ33ï33ˇˇñ33ÃÃˇˇó33ÃÃÃÃò33ÃÃôôô33ÃÃffö33ÃÃ33õ33ÃÃú33ôôˇˇù33ôôÃÃû33ôôôôü33ôôff†33ôô33°33ôô¢33ffˇˇ£33ffÃç33ffôô•33ffff¶33ff33ß33ff®3333ˇˇ©3333ÃÙ3333ôô´3333ff¨333333≠3333Æ33ˇˇØ33ÃÃ∞33ôô±33ff≤3333≥33¥ˇˇˇˇµˇˇÃÃ∂ˇˇôô∑ˇˇff∏ˇˇ33πˇˇ∫ÃÃˇˇªÃÃÃúÃÃôôΩÃÃffæÃÃ33øÃÿôôˇˇ¡ôôÃìôôôô√ôôffƒôô33≈ôôΔffˇˇ«ffÃûffôô…ffff ff33ÀffÃ33ˇˇÕ33ÃÃŒ33ôôœ33ff–3333—33“ˇˇ”ÃÑôô’ff÷33◊ÿˇˇˇŸ˘`˘`˘`⁄Ú–Ú–Ú–€Ï@Ï@Ï@‹Â∞Â∞Â∞›fl fl fl fiÿêÿêÿêfl“““‡ÀpÀpÀp·ƒ‡ƒ‡ƒ‡‚æPæPæP„∑¿∑¿∑¿‰±0±0±0™†™†™†Ê§§§ÁùÄùÄùÄËñññÈê`ê`ê`Íâ–â–â–ÎÉ@É@É@Ï|∞|∞|∞Ìv v v ÓoêoêoêÔiiibpbpbpÒ[‡[‡[‡ÚUPUPUPÛN¿N¿N¿ÙH0H0H0ıA†A†A†ˆ;;;˜4Ä4Ä4į---˘'`'`'`˙ – – –˚@@@¸∞∞∞˝
  5461.  
  5462.  
  5463.  ˛êêêĆ]¥6‘í'π˘ˇˇˇ˘ˇˇ˜˝ˇ˛ˇŒˇˇ¸¸ˇ¸˘ˇ˛ˇ˛ˇŒˇ˝ˇÌˇ˛ˇÚ∏˘ˇˇˇ˘˛ˇ˘˝ˇ˛ˇŒˇˇ˚˚ˇ˜ˇ˛ˇ˛ˇŒˇˇÍˇ˛ˇÚµ˘ˇˇˇ¯˘ˇ˝ˇ˛ˇŒˇˇ˙Òˇ˛ˇ˛ˇŒˇˇÍˇ˛ˇÚª˘ˇˇˇˆˇˇ˚ˇ˛ˇŒˇˇ¯˙ˇ¸ˇ˝ˇ˛ˇŒˇˇÍˇ˛ˇÚº˘ˇˇˇ¯ˇˇ¸ˇ˛ˇŒˇˇˇˆ˛ˇ˜ˇˇ˛ˇŒˇˇÍˇ˛ˇÚæ˘ˇˇˇ˙ˇˇ˝ˇ˛ˇŒˇ¯ˇ˙˜ˇ˛ˇŒˇˇˇÎˇ˛ˇÚ—˘ ˇˇˇ¸!ˇˇ˛ˇŒ ˇˇˇ˙ˇˇ˛ˇŒˇˇÏˇˇ˛ˇÚÃ˘!ˇˇˇ˛"ˇˇ˛ˇŒˇıˇ˛ˇŒˇ͡˛ˇÚÈ˘Gˇˇˇˇˇ˛ˇŒGˇ˛ˇŒGˇ˛ˇÚÈ˘!ˇ˛ˇ"˛ˇŒGˇ˛ˇŒGˇ˛ˇÚÈ˘Gˇ˛ˇŒGˇ˛ˇŒGˇ˛ˇÚÈ˘Gˇ˛ˇŒGˇ˛ˇŒGˇ˛ˇÚÈ˘Gˇ˛ˇŒGˇ˛ˇŒGˇ˛ˇÚÈ˘Gˇ˛ˇŒGˇ˛ˇŒGˇ˛ˇÚÈ˘Gˇ˛ˇŒGˇ˛ˇŒGˇ˛ˇÚÈ˘Gˇ˛ˇŒGˇ˛ˇŒGˇ˛ˇÚÈ˘Gˇ˛ˇŒGˇ˛ˇŒGˇ˛ˇÚÈ˘Gˇ˛ˇŒGˇ˛ˇŒGˇ˛ˇÚÈ˘Gˇ˛ˇŒGˇ˛ˇŒGˇ˛ˇÚÈ˘Gˇ˛ˇŒGˇ˛ˇŒGˇ˛ˇÚÈ˘Gˇ˛ˇŒGˇ˛ˇŒGˇ˛ˇÚÈ˘Gˇ˛ˇŒGˇ˛ˇŒGˇ˛ˇÚÈ˘Gˇ˛ˇŒGˇ˛ˇŒGˇ˛ˇÚÈ˘Gˇ˛ˇŒGˇ˛ˇŒGˇ˛ˇÚÈ˘Gˇ˛ˇŒGˇ˛ˇŒGˇ˛ˇÚÈ˘Gˇ˛ˇŒGˇ˛ˇŒGˇ˛ˇÚÈ˘Gˇ˛ˇŒGˇ˛ˇŒGˇ˛ˇÚÈ˘Gˇ˛ˇŒGˇ˛ˇŒGˇ˛ˇÚ˘∂ˇŒ∂ˇŒ∂ˇÚ˜∏ˇÃ∏ˇÃ∏ˇÚ˜∏ˇÃ∏ˇÃ∏ˇÚÅÅ£†è†É†ø
  5464. d
  5465.     °dONLNd…‘@*ÕFigure 2°dONLNd’‡Ω* %How Applications Work With Components
  5466. °dONLNd5Ú˛è*VConceptually, components consist of two parts: a collection of functions as defined in°dONLNdå˛
  5467. r* Lthe component’s API, and a dispatcher that takes care of routing application°dONLNdŸ
  5468. ç* Urequests to the proper function. These requests are represented by request codes that°dONLNd/"* t°dONLNd0"")h°dONLNd1!"&)e x4x&,Times
  5469. ({) 
  5470. +
  5471. 11
  5472. (Ú*1TECHNIQUES FOR WRITING AND DEBUGGING COMPONENTS  
  5473. )”
  5474. December 1992ˇ†æ°¿9pse
  5475. currentpoint
  5476. /picTop exch def
  5477. /picLeft exch def
  5478. psb
  5479. †ø†æ°¿=pse
  5480. currentpoint
  5481. /picBottom exch def
  5482. /picRight exch def
  5483. psb
  5484. †ø†æ°¿[ -142.5 340 206.5 500]
  5485. °¿€1 dict begin /s exch def
  5486. picLeft picTop translate
  5487. picRight picLeft sub s 2 get s 0 get sub div
  5488. picBottom picTop sub s 1 get s 3 get sub div
  5489. scale
  5490. s 0 get neg s 3 get neg translate
  5491. end
  5492. /showpage {} def
  5493. /copypage {} def
  5494. °¿ %!PS-Adobe-3.0 EPSF-3.0
  5495. %%Creator: Adobe Illustrator(TM) 3.2
  5496. %%For: (Diane Wilcox) (Apple Computer, Inc.)
  5497. %%Title: (Woodcock Fig_02MSW)
  5498. %%CreationDate: (10/2/92) (1:21 PM)
  5499. %%BoundingBox: -142.5 340 206.5 500
  5500. %%DocumentProcessColors: Magenta Black
  5501. %%DocumentFonts: Helvetica
  5502. %%DocumentSuppliedResources: procset Adobe_packedarray 2.0 0
  5503. %%+ procset Adobe_cmykcolor 1.1 0
  5504. %%+ procset Adobe_cshow 1.1 0
  5505. %%+ procset Adobe_customcolor 1.0 0
  5506. %%+ procset Adobe_typography_AI3 1.0 1
  5507. %%+ procset Adobe_IllustratorA_AI3 1.0 1
  5508. %AI3_ColorUsage: Color
  5509. %AI3_TemplateBox: 39.5 302 39.5 302
  5510. %AI3_TileBox: -236.5 -63 315.5 667
  5511. %AI3_DocumentPreview: Macintosh_ColorPic
  5512. %%EndComments
  5513. %%BeginProlog
  5514. %%BeginResource: procset Adobe_packedarray 2.0 0
  5515. %%Title: (Packed Array Operators)
  5516. %%Version: 2.0 
  5517. %%CreationDate: (8/2/90) ()
  5518. %%Copyright: ((C) 1987-1990 Adobe Systems Incorporated All Rights Reserved)
  5519. userdict /Adobe_packedarray 5 dict dup begin put
  5520. /initialize            % - initialize -
  5521. {
  5522. /packedarray where
  5523.     {
  5524.     pop
  5525.     }
  5526.     {
  5527.     Adobe_packedarray begin
  5528.     Adobe_packedarray
  5529.         {
  5530.         dup xcheck
  5531.             {
  5532.             bind
  5533.             } if
  5534.         userdict 3 1 roll put
  5535.         } forall
  5536.     end
  5537.     } ifelse
  5538. } def
  5539. /terminate            % - terminate -
  5540. {
  5541. } def
  5542. /packedarray        % arguments count packedarray array
  5543. {
  5544. array astore readonly
  5545. } def
  5546. /setpacking            % boolean setpacking -
  5547. {
  5548. pop
  5549. } def
  5550. /currentpacking        % - setpacking boolean
  5551. {
  5552. false
  5553. } def
  5554. currentdict readonly pop end
  5555. %%EndResource
  5556. Adobe_packedarray /initialize get exec
  5557. %%BeginResource: procset Adobe_cmykcolor 1.1 0
  5558. %%Title: (CMYK Color Operators)
  5559. %%Version: 1.1 
  5560. %%CreationDate: (1/23/89) ()
  5561. %%Copyright: ((C) 1987-1990 Adobe Systems Incorporated All Rights Reserved)
  5562. currentpacking true setpacking
  5563. userdict /Adobe_cmykcolor 4 dict dup begin put
  5564. /initialize            % - initialize -
  5565. {
  5566. /setcmykcolor where
  5567.     {
  5568.     pop
  5569.     }
  5570.     {
  5571.     userdict /Adobe_cmykcolor_vars 2 dict dup begin put
  5572.     /_setrgbcolor
  5573.         /setrgbcolor load def
  5574.     /_currentrgbcolor
  5575.         /currentrgbcolor load def
  5576.     Adobe_cmykcolor begin
  5577.     Adobe_cmykcolor
  5578.         {
  5579.         dup xcheck
  5580.             {
  5581.             bind
  5582.             } if
  5583.         pop pop
  5584.         } forall
  5585.     end
  5586.     end
  5587.     Adobe_cmykcolor begin
  5588.     } ifelse
  5589. } def
  5590. /terminate            % - terminate -
  5591. {
  5592. currentdict Adobe_cmykcolor eq
  5593.     {
  5594.     end
  5595.     } if
  5596. } def
  5597. /setcmykcolor        % cyan magenta yellow black setcmykcolor -
  5598. {
  5599. 1 sub 4 1 roll
  5600. 3
  5601.     {
  5602.     3 index add neg dup 0 lt
  5603.         {
  5604.         pop 0
  5605.         } if
  5606.     3 1 roll
  5607.     } repeat
  5608. Adobe_cmykcolor_vars /_setrgbcolor get exec
  5609. pop
  5610. } def 
  5611. /currentcmykcolor    % - currentcmykcolor cyan magenta yellow black
  5612. {
  5613. Adobe_cmykcolor_vars /_currentrgbcolor get exec
  5614. 3
  5615.     {
  5616.     1 sub neg 3 1 roll
  5617.     } repeat
  5618. 0
  5619. } def
  5620. currentdict readonly pop end
  5621. setpacking
  5622. %%EndResource
  5623. %%BeginResource: procset Adobe_cshow 1.1 0
  5624. %%Title: (cshow Operator)
  5625. %%Version: 1.1 
  5626. %%CreationDate: (1/23/89) ()
  5627. %%Copyright: ((C) 1987-1990 Adobe Systems Incorporated All Rights Reserved)
  5628. currentpacking true setpacking
  5629. userdict /Adobe_cshow 3 dict dup begin put
  5630. /initialize            % - initialize -
  5631. {
  5632. /cshow where
  5633.     {
  5634.     pop
  5635.     }
  5636.     {
  5637.     userdict /Adobe_cshow_vars 1 dict dup begin put
  5638.     /_cshow        % - _cshow proc
  5639.         {} def
  5640.     Adobe_cshow begin
  5641.     Adobe_cshow
  5642.         {
  5643.         dup xcheck
  5644.             {
  5645.             bind
  5646.             } if
  5647.         userdict 3 1 roll put
  5648.         } forall
  5649.     end
  5650.     end
  5651.     } ifelse
  5652. } def
  5653. /terminate            % - terminate -
  5654. {
  5655. } def
  5656. /cshow                % proc string cshow -
  5657. {
  5658. exch
  5659. Adobe_cshow_vars
  5660.     exch /_cshow
  5661.     exch put
  5662.     {
  5663.     0 0 Adobe_cshow_vars /_cshow get exec
  5664.     } forall
  5665. } def
  5666. currentdict readonly pop end
  5667. setpacking
  5668. %%EndResource
  5669. %%BeginResource: procset Adobe_customcolor 1.0 0
  5670. %%Title: (Custom Color Operators)
  5671. %%Version: 1.0 
  5672. %%CreationDate: (5/9/88) ()
  5673. %%Copyright: ((C) 1987-1990 Adobe Systems Incorporated All Rights Reserved)
  5674. currentpacking true setpacking
  5675. userdict /Adobe_customcolor 5 dict dup begin put
  5676. /initialize            % - initialize -
  5677. {
  5678. /setcustomcolor where
  5679.     {
  5680.     pop
  5681.     }
  5682.     {
  5683.     Adobe_customcolor begin
  5684.     Adobe_customcolor
  5685.         {
  5686.         dup xcheck
  5687.             {
  5688.             bind
  5689.             } if
  5690.         pop pop
  5691.         } forall
  5692.     end
  5693.     Adobe_customcolor begin
  5694.     } ifelse
  5695. } def
  5696. /terminate            % - terminate -
  5697. {
  5698. currentdict Adobe_customcolor eq
  5699.     {
  5700.     end
  5701.     } if
  5702. } def
  5703. /findcmykcustomcolor    % cyan magenta yellow black name findcmykcustomcolor object
  5704. {
  5705. 5 packedarray
  5706. }  def
  5707. /setcustomcolor        % object tint setcustomcolor -
  5708. {
  5709. exch
  5710. aload pop pop
  5711. 4
  5712.     {
  5713.     4 index mul 4 1 roll
  5714.     } repeat
  5715. 5 -1 roll pop
  5716. setcmykcolor
  5717. } def
  5718. /setoverprint        % boolean setoverprint -
  5719. {
  5720. pop
  5721. } def
  5722. currentdict readonly pop end
  5723. setpacking
  5724. %%EndResource
  5725. %%BeginResource: procset Adobe_typography_AI3 1.1 0
  5726. %%Title: (Typography Operators)
  5727. %%Version: 1.0 
  5728. %%CreationDate:(5/31/90) ()
  5729. %%Copyright: ((C) 1987-1990 Adobe Systems Incorporated All Rights Reserved)
  5730. currentpacking true setpacking
  5731. userdict /Adobe_typography_AI3 47 dict dup begin put
  5732. /initialize            % - initialize -
  5733. {
  5734. /TZ
  5735.  where
  5736.     {
  5737.     pop
  5738.     }
  5739.     {
  5740.     Adobe_typography_AI3 begin
  5741.     Adobe_typography_AI3
  5742.         {
  5743.         dup xcheck
  5744.             {
  5745.             bind
  5746.             } if
  5747.         pop pop
  5748.         } forall
  5749.     end
  5750.     Adobe_typography_AI3 begin
  5751.     } ifelse
  5752. } def
  5753. /terminate            % - terminate -
  5754. {
  5755. currentdict Adobe_typography_AI3 eq
  5756.     {
  5757.     end
  5758.     } if
  5759. } def
  5760. % [ number value stream [ array for encoding modification ] modifyEncoding ==> [ modified array ]
  5761. /modifyEncoding
  5762. {
  5763.     /_tempEncode exch ddef
  5764.     
  5765.     % pointer for sequential encodings
  5766.     /_pntr 0 ddef
  5767.     
  5768.     {
  5769.         % get bottom object
  5770.         counttomark -1 roll
  5771.         % is it a mark ?
  5772.         dup type dup /marktype eq         
  5773.         {
  5774.             % exit
  5775.             pop pop exit
  5776.         }
  5777.         {
  5778.             % ... object ... type ....
  5779.             % insert if a nametype
  5780.             /nametype eq
  5781.             {
  5782.                 % insert the name at _pntr and increment pointer
  5783.                 _tempEncode /_pntr dup load dup 3 1 roll 1 add ddef 3 -1 roll
  5784.                 put
  5785.             }
  5786.             {
  5787.                 % reset _pntr if it's a number
  5788.                 /_pntr exch ddef                    
  5789.             }
  5790.             ifelse
  5791.         }
  5792.         ifelse
  5793.     }
  5794.     loop    
  5795.     
  5796.     % return the modified encoding
  5797.     _tempEncode
  5798. }
  5799. def
  5800. /TE    % Set std platform encoding     % (encoding pairs) TE -
  5801. {
  5802.     StandardEncoding 256 array copy modifyEncoding 
  5803.     /_nativeEncoding exch def
  5804. } def
  5805. % re-define font
  5806. % expected arguments
  5807. % for 'normal fonts : 
  5808. % [ /_Helvetica-Bold/Helvetica-Bold direction fontScript defaultEncoding TZ
  5809. %
  5810. % for cartographic, pictographic, and expert fonts :
  5811. % [ ... number value stream ... /_Symbol/Symbol 
  5812. %    direction fontScript defaultEncoding TZ
  5813. % for blended fonts w/ default encoding :
  5814. % [ /_AdobeSans_20ULig1XCond-Bold/AdobeSans 
  5815. %    direction fontScript defaultEncoding [ w0 w1 ... wn ] TZ
  5816. % for blended fonts w/ special encoding :
  5817. % [ ... number value stream ... /_AdobeSans_20ULig1XCond/AdobeSans 
  5818. %    direction fontScript defaultEncoding [ w0 w1 ... wn ] TZ
  5819. /TZ        
  5820. {
  5821.     % set weight vector (if present)
  5822.     dup type /arraytype eq {/_wv exch def} {/_wv 0 def} ifelse 
  5823.     % platform dependent coding flag
  5824.     /_useNativeEncoding exch def
  5825.     % pop fontScript & direction
  5826.     pop pop
  5827.     
  5828.     % create a new dictionary with length
  5829.     % equal to original dictionary length + 2
  5830.     % copy all the key/value pairs except FID
  5831.     % call makeblended font with the weight values if _wv is an array
  5832.     findfont _wv type /arraytype eq {_wv makeblendedfont} if dup length 2 add dict
  5833.     
  5834.     begin
  5835.     
  5836.         % copy all the values but the FID
  5837.         % into the new dictionary
  5838.         mark exch
  5839.         {
  5840.             1 index /FID ne { def } if cleartomark mark
  5841.         }
  5842.         forall
  5843.         % discard last mark
  5844.         pop
  5845.         
  5846.         % define FontName
  5847.         /FontName exch def
  5848.         
  5849.         % if no re-encoding stream is present
  5850.         % then if the base encoding vector of the font
  5851.         % is the same as StandardEncoding
  5852.         % and the use platform encoding flag is true
  5853.         % then install AI platform encoding
  5854.         % else leave the base encoding in effect
  5855.         counttomark 0 eq
  5856.         {
  5857.             1 _useNativeEncoding eq
  5858.             {
  5859.                 /Encoding _nativeEncoding def
  5860.             }
  5861.             if
  5862.             % clean up
  5863.             cleartomark
  5864.         }
  5865.         {    
  5866.             % custom encoding to be done
  5867.             % start off with a copy of the font's standard encoding
  5868.             /Encoding load 256 array copy 
  5869.             modifyEncoding /Encoding exch def
  5870.         }
  5871.         ifelse        
  5872.         FontName currentdict
  5873.     end
  5874.     
  5875.     % register the new font
  5876.     definefont pop
  5877. }
  5878. def
  5879. % text painting operators
  5880. /tr                    % string tr ax ay string 
  5881. {
  5882. _ax _ay 3 2 roll
  5883. } def
  5884. /trj                % string trj cx cy fillchar ax ay string 
  5885. {
  5886. _cx _cy _sp _ax _ay 6 5 roll
  5887. } def
  5888. /a0
  5889. {
  5890. /Tx    % text                            % textString Tx -
  5891.     {
  5892.     dup 
  5893.     currentpoint 3 2 roll
  5894.     tr _psf
  5895.     newpath moveto
  5896.     tr _ctm _pss
  5897.     } ddef
  5898. /Tj    % justified text                % textString Tj -
  5899.     {
  5900.     dup
  5901.     currentpoint 3 2 roll
  5902.     trj _pjsf
  5903.     newpath moveto
  5904.     trj _ctm _pjss
  5905.     } ddef
  5906.     
  5907. } def
  5908. /a1
  5909. {
  5910. /Tx    % text                            % textString Tx -
  5911.     {
  5912.     dup currentpoint 4 2 roll gsave
  5913.     dup currentpoint 3 2 roll
  5914.     tr _psf
  5915.     newpath movet°¿ o
  5916.     tr _ctm _pss
  5917.     grestore 3 1 roll moveto tr sp
  5918.     } ddef
  5919. /Tj    % justified text                % textString Tj -
  5920.     {
  5921.     dup currentpoint 4 2 roll gsave
  5922.     dup currentpoint 3 2 roll
  5923.     trj _pjsf
  5924.     newpath moveto
  5925.     trj _ctm _pjss
  5926.     grestore 3 1 roll moveto tr sp
  5927.     } ddef
  5928.     
  5929. } def
  5930. /e0
  5931. {
  5932. /Tx    % text                            % textString Tx -
  5933.     {
  5934.     tr _psf
  5935.     } ddef
  5936. /Tj    % justified text                % textString Tj -
  5937.     {
  5938.     trj _pjsf
  5939.     } ddef
  5940. } def
  5941. /e1
  5942. {
  5943. /Tx    % text                            % textString Tx -
  5944.     {
  5945.     dup currentpoint 4 2 roll gsave 
  5946.     tr _psf  
  5947.     grestore 3 1 roll moveto tr sp 
  5948.     } ddef
  5949. /Tj    % justified text                % textString Tj -
  5950.     {
  5951.     dup currentpoint 4 2 roll gsave 
  5952.     trj _pjsf
  5953.     grestore 3 1 roll moveto tr sp 
  5954.     } ddef
  5955. } def
  5956. /i0
  5957. {
  5958. /Tx    % text                            % textString Tx -
  5959.     {
  5960.     tr sp
  5961.     } ddef
  5962. /Tj    % justified text                % textString Tj -
  5963.     {
  5964.     trj jsp
  5965.     } ddef
  5966. } def
  5967. /i1
  5968. {
  5969. W N
  5970. } def
  5971. /o0
  5972. {
  5973. /Tx    % text                            % textString Tx -
  5974.     {
  5975.     tr sw rmoveto
  5976.     } ddef
  5977. /Tj    % justified text                % textString Tj -
  5978.     {
  5979.     trj swj rmoveto
  5980.     } ddef
  5981. } def
  5982. /r0
  5983. {
  5984. /Tx    % text                            % textString Tx -
  5985.     {
  5986.     tr _ctm _pss
  5987.     } ddef
  5988. /Tj    % justified text                % textString Tj -
  5989.     {
  5990.     trj _ctm _pjss
  5991.     } ddef
  5992. } def
  5993. /r1
  5994. {
  5995. /Tx    % text                            % textString Tx -
  5996.     {
  5997.     dup currentpoint 4 2 roll currentpoint gsave newpath moveto
  5998.     tr _ctm _pss 
  5999.     grestore 3 1 roll moveto tr sp 
  6000.     } ddef
  6001. /Tj    % justified text                % textString Tj -
  6002.     {
  6003.     dup currentpoint 4 2 roll currentpoint gsave newpath moveto
  6004.     trj _ctm _pjss
  6005.     grestore 3 1 roll moveto tr sp 
  6006.     } ddef
  6007. } def
  6008. % font operators
  6009. % Binding
  6010. /To    % begin text                     % bindType To -
  6011. {
  6012.     pop _ctm currentmatrix pop
  6013. } def
  6014. /TO    % end text                    % TO -
  6015. {
  6016.     Te _ctm setmatrix newpath
  6017. } def
  6018. % Text paths
  6019. /Tp    % begin text path                % a b c d tx ty startPt Tp -
  6020. {
  6021.     pop _tm astore pop _ctm setmatrix 
  6022.     _tDict begin /W {} def /h {} def
  6023. } def
  6024. /TP    % end text path                    % TP -
  6025. {
  6026.     end
  6027.     iTm 0 0 moveto
  6028. } def
  6029. % Render mode & matrix operators
  6030. /Tr    % begin render                    % render Tr - 
  6031. {
  6032.     _render 3 le {currentpoint newpath moveto} if
  6033.     dup 8 eq {pop 0} {dup 9 eq {pop 1} if} ifelse
  6034.     dup /_render exch ddef
  6035.     _renderStart exch get load exec
  6036. } def
  6037. /iTm % internal set text matrix        % - iTm -    (uses _tm as implicit argument)
  6038. {
  6039. _ctm setmatrix _tm concat 0 _rise translate _hs 1 scale
  6040. } def
  6041. /Tm % set text matrix                % a b c d tx ty Tm -
  6042. {
  6043. _tm astore pop iTm 0 0 moveto
  6044. } def
  6045. /Td % translate text matrix         % tx ty Td -
  6046. {
  6047. _mtx translate _tm _tm concatmatrix pop iTm 0 0 moveto
  6048. } def
  6049. /Te    % end render                    % - Te -
  6050. {
  6051.     _render -1 eq {} {_renderEnd _render get dup null ne {load exec} {pop} ifelse} ifelse
  6052.     /_render -1 ddef
  6053. } def
  6054. % Attributes
  6055. /Ta    % set alignment                    % alignment Ta -
  6056. {
  6057. pop
  6058. } def
  6059. /Tf    % set font name and size        % fontname size Tf -
  6060. {
  6061. dup 1000 div /_fScl exch ddef
  6062. exch findfont exch scalefont setfont
  6063. } def
  6064. /Tl    % set leading                    % leading paragraphLeading Tl -
  6065. {
  6066. pop
  6067. 0 exch _leading astore pop
  6068. } def
  6069. /Tt    % set user tracking                % userTracking Tt -
  6070. {
  6071. pop
  6072. } def
  6073. /TW % set word spacing                % minSpace optSpace maxSpace TW -
  6074. {
  6075. 3 npop
  6076. } def
  6077. /Tw    % set computed word spacing        % wordSpace Tw
  6078. {
  6079. /_cx exch ddef
  6080. } def
  6081. /TC % set character spacing            % minSpace optSpace maxSpace TC -
  6082. {
  6083. 3 npop
  6084. } def
  6085. /Tc    % set computed char spacing     % charSpace Tc -
  6086. {
  6087. /_ax exch ddef
  6088. } def
  6089. /Ts % set super/subscripting (rise)    % rise Ts -
  6090. {
  6091. /_rise exch ddef
  6092. currentpoint
  6093. iTm
  6094. moveto
  6095. } def
  6096. /Ti    % set indentation                % firstStartIndent otherStartIndent stopIndent Ti -
  6097. {
  6098. 3 npop
  6099. } def
  6100. /Tz % set horizontal scaling        % scalePercent Tz -
  6101. {
  6102. 100 div /_hs exch ddef
  6103. iTm
  6104. } def
  6105. /TA % set pairwise kerning            % autoKern TA -
  6106.                                     %    autoKern = 0 -> no pair kerning
  6107.                                     %             = 1 -> automatic pair kerning
  6108. {
  6109. pop
  6110. } def
  6111. /Tq % set hanging quotes            % hangingQuotes Tq -
  6112.                                     %    hangingQuotes     = 0 -> no hanging quotes
  6113.                                     %                     = 1 -> hanging quotes
  6114. {
  6115. pop
  6116. } def
  6117. % Text Bodies
  6118. /TX {pop} def
  6119. %/Tx    % non-justified text            % textString Tx -
  6120. %/Tj    % justified text                % textString Tj -
  6121. /Tk    % kern                            % autoKern kernValue Tk -
  6122.                                     %      autoKern = 0 -> manual kern, = 1 -> auto kern
  6123.                                     %    kernValue = kern value in em/1000 space
  6124. {
  6125. exch pop _fScl mul neg 0 rmoveto
  6126. } def
  6127. /TK    % non-printing kern                % autoKern kernValue TK -
  6128. {
  6129. 2 npop
  6130. } def
  6131. /T* % carriage return & line feed    % - T* -
  6132. {
  6133. _leading aload pop neg Td
  6134. } def
  6135. /T*- % carriage return & negative line feed    % - T*- -
  6136. {
  6137. _leading aload pop Td
  6138. } def
  6139. /T-    % print a discretionary hyphen    % - T- -
  6140. {
  6141. _hyphen Tx
  6142. } def
  6143. /T+    % discretionary hyphen hyphen    % - T+ -
  6144. {} def
  6145. /TR    % reset pattern matrix             % a b c d tx ty TR -
  6146. {
  6147. _ctm currentmatrix pop     
  6148. _tm astore pop 
  6149. iTm 0 0 moveto 
  6150. } def
  6151. /TS    % special chars                    % textString justified TS -
  6152. {
  6153. 0 eq {Tx} {Tj} ifelse
  6154. } def
  6155. currentdict readonly pop end
  6156. setpacking
  6157. %%EndResource
  6158. %%BeginResource: procset Adobe_IllustratorA_AI3 1.0 2
  6159. %%Title: (Adobe Illustrator (R) Version 3.0 Abbreviated Prolog)
  6160. %%Version: 1.0 
  6161. %%CreationDate: (7/22/89) ()
  6162. %%Copyright: ((C) 1987-1990 Adobe Systems Incorporated All Rights Reserved)
  6163. currentpacking true setpacking
  6164. userdict /Adobe_IllustratorA_AI3 61 dict dup begin put
  6165. % initialization
  6166. /initialize                % - initialize -
  6167. {
  6168. % 47 vars, but leave slack of 10 entries for custom Postscript fragments
  6169. userdict /Adobe_IllustratorA_AI3_vars 57 dict dup begin put
  6170. % paint operands
  6171. /_lp /none def
  6172. /_pf {} def
  6173. /_ps {} def
  6174. /_psf {} def
  6175. /_pss {} def
  6176. /_pjsf {} def
  6177. /_pjss {} def
  6178. /_pola 0 def
  6179. /_doClip 0 def
  6180. % paint operators
  6181. /cf    currentflat def    % - cf flatness
  6182. % typography operands
  6183. /_tm matrix def
  6184. /_renderStart [/e0 /r0 /a0 /o0 /e1 /r1 /a1 /i0] def 
  6185. /_renderEnd [null null null null /i1 /i1 /i1 /i1] def
  6186. /_render -1 def
  6187. /_rise 0 def
  6188. /_ax 0 def            % x character spacing    (_ax, _ay, _cx, _cy follows awidthshow naming convention)
  6189. /_ay 0 def            % y character spacing
  6190. /_cx 0 def            % x word spacing
  6191. /_cy 0 def            % y word spacing
  6192. /_leading [0 0] def
  6193. /_ctm matrix def
  6194. /_mtx matrix def
  6195. /_sp 16#020 def
  6196. /_hyphen (-) def
  6197. /_fScl 0 def
  6198. /_cnt 0 def
  6199. /_hs 1 def
  6200. /_nativeEncoding 0 def
  6201. /_useNativeEncoding 0 def
  6202. /_tempEncode 0 def
  6203. /_pntr 0 def
  6204. /_tDict 2 dict def
  6205. % typography operators
  6206. /Tx {} def
  6207. /Tj {} def
  6208. % compound path operators
  6209. /CRender {} def
  6210. % printing
  6211. /_AI3_savepage {} def
  6212. % color operands
  6213. /_gf null def
  6214. /_cf 4 array def
  6215. /_if null def
  6216. /_of false def
  6217. /_fc {} def
  6218. /_gs null def
  6219. /_cs 4 array def
  6220. /_is null def
  6221. /_os false def
  6222. /_sc {} def
  6223. /_i null def
  6224. Adobe_IllustratorA_AI3 begin
  6225. Adobe_IllustratorA_AI3
  6226.     {
  6227.     dup xcheck
  6228.         {
  6229.         bind
  6230.         } if
  6231.     pop pop
  6232.     } forall
  6233. end
  6234. end
  6235. Adobe_IllustratorA_AI3 begin
  6236. Adobe_IllustratorA_AI3_vars begin
  6237. newpath
  6238. } def
  6239. /terminate                % - terminate -
  6240. {
  6241. end
  6242. end
  6243. } def
  6244. % definition operators
  6245. /_                    % - _ null
  6246. null def
  6247. /ddef                % key value ddef -
  6248. {
  6249. Adobe_IllustratorA_AI3_vars 3 1 roll put
  6250. } def
  6251. /xput                % key value literal xput -
  6252. {
  6253. dup load dup length exch maxlength eq
  6254.     {
  6255.     dup dup load dup
  6256.     length 2 mul dict copy def
  6257.     } if
  6258. load begin def end
  6259. } def
  6260. /npop                % integer npop -
  6261. {
  6262.     {
  6263.     pop
  6264.     } repeat
  6265. } def
  6266. % marking operators
  6267. /sw                    % ax ay string sw x y 
  6268. {
  6269. dup length exch stringwidth
  6270. exch 5 -1 roll 3 index 1 sub mul add
  6271. 4 1 roll 3 1 roll 1 sub mul add
  6272. } def
  6273. /swj                % cx cy fillchar ax ay string swj x y
  6274. {
  6275. dup 4 1 roll
  6276. dup length exch stringwidth 
  6277. exch 5 -1 roll 3 index 1 sub mul add
  6278. 4 1 roll 3 1 roll 1 sub mul add 
  6279. 6 2 roll /_cnt 0 ddef
  6280. {1 index eq {/_cnt _cnt 1 add ddef} if} forall pop
  6281. exch _cnt mul exch _cnt mul 2 index add 4 1 roll 2 index add 4 1 roll pop pop
  6282. } def
  6283. /ss                    % ax ay string matrix ss -
  6284. {
  6285. 4 1 roll
  6286.     {                % matrix ax ay char 0 0 {proc} -
  6287.     2 npop 
  6288.     (0) exch 2 copy 0 exch put pop
  6289.     gsave
  6290.     false charpath currentpoint
  6291.     4 index setmatrix
  6292.     stroke
  6293.     grestore
  6294.     moveto
  6295.     2 copy rmoveto
  6296.     } exch cshow
  6297. 3 npop
  6298. } def
  6299. /jss                % cx cy fillchar ax ay string matrix jss -
  6300. {
  6301. 4 1 roll
  6302.     {                % cx cy fillchar matrix ax ay char 0 0 {proc} -   
  6303.     2 npop 
  6304.     (0) exch 2 copy 0 exch put 
  6305.     gsave
  6306.     _sp eq 
  6307.         {
  6308.         exch 6 index 6 index 6 index 5 -1 roll widthshow  
  6309.         currentpoint
  6310.         }
  6311.         {
  6312.         false charpath currentpoint
  6313.         4 index setmatrix stroke
  6314.         }ifelse
  6315.     grestore
  6316.     moveto
  6317.     2 copy rmoveto
  6318.     } exch cshow
  6319. 6 npop
  6320. } def
  6321. % path operators
  6322. /sp                    % ax ay string sp -
  6323. {
  6324.     {
  6325.     2 npop (0) exch
  6326.     2 copy 0 exch put pop
  6327.     false charpath
  6328.     2 copy rmoveto
  6329.     } exch cshow
  6330. 2 npop
  6331. } def
  6332. /jsp                    % cx cy fillchar ax ay string jsp -
  6333. {
  6334.     {                    % cx cy fillchar ax ay char 0 0 {proc} -
  6335.     2 npop 
  6336.     (0) exch 2 copy 0 exch put 
  6337.     _sp eq 
  6338.         {
  6339.         exch 5 index 5 index 5 index 5 -1 roll widthshow  
  6340. °¿         }
  6341.         {
  6342.         false charpath
  6343.         }ifelse
  6344.     2 copy rmoveto
  6345.     } exch cshow
  6346. 5 npop
  6347. } def
  6348. % path construction operators
  6349. /pl                % x y pl x y
  6350. {
  6351. transform
  6352. 0.25 sub round 0.25 add exch
  6353. 0.25 sub round 0.25 add exch
  6354. itransform
  6355. } def
  6356. /setstrokeadjust where
  6357.     {
  6358.     pop true setstrokeadjust
  6359.     /c                % x1 y1 x2 y2 x3 y3 c -
  6360.     {
  6361.     curveto
  6362.     } def
  6363.     /C
  6364.     /c load def
  6365.     /v                % x2 y2 x3 y3 v -
  6366.     {
  6367.     currentpoint 6 2 roll curveto
  6368.     } def
  6369.     /V
  6370.     /v load def
  6371.     /y                % x1 y1 x2 y2 y -
  6372.     {
  6373.     2 copy curveto
  6374.     } def
  6375.     /Y
  6376.     /y load def
  6377.     /l                % x y l -
  6378.     {
  6379.     lineto
  6380.     } def
  6381.     /L
  6382.     /l load def
  6383.     /m                % x y m -
  6384.     {
  6385.     moveto
  6386.     } def
  6387.     }
  6388.     {%else
  6389.     /c
  6390.     {
  6391.     pl curveto
  6392.     } def
  6393.     /C
  6394.     /c load def
  6395.     /v
  6396.     {
  6397.     currentpoint 6 2 roll pl curveto
  6398.     } def
  6399.     /V
  6400.     /v load def
  6401.     /y
  6402.     {
  6403.     pl 2 copy curveto
  6404.     } def
  6405.     /Y
  6406.     /y load def
  6407.     /l
  6408.     {
  6409.     pl lineto
  6410.     } def
  6411.     /L
  6412.     /l load def
  6413.     /m
  6414.     {
  6415.     pl moveto
  6416.     } def
  6417.     }ifelse
  6418. % graphic state operators
  6419. /d                    % array phase d -
  6420. {
  6421. setdash
  6422. } def
  6423. /cf    {} def            % - cf flatness
  6424. /i                    % flatness i -
  6425. {
  6426. dup 0 eq
  6427.     {
  6428.     pop cf
  6429.     } if
  6430. setflat
  6431. } def
  6432. /j                    % linejoin j -
  6433. {
  6434. setlinejoin
  6435. } def
  6436. /J                    % linecap J -
  6437. {
  6438. setlinecap
  6439. } def
  6440. /M                    % miterlimit M -
  6441. {
  6442. setmiterlimit
  6443. } def
  6444. /w                    % linewidth w -
  6445. {
  6446. setlinewidth
  6447. } def
  6448. % path painting operators
  6449. /H                    % - H -
  6450. {} def
  6451. /h                    % - h -
  6452. {
  6453. closepath
  6454. } def
  6455. /N                    % - N -
  6456. {
  6457. _pola 0 eq 
  6458.     {
  6459.     _doClip 1 eq {clip /_doClip 0 ddef} if 
  6460.     newpath
  6461.     } 
  6462.     {
  6463.     /CRender {N} ddef
  6464.     }ifelse
  6465. } def
  6466. /n                    % - n -
  6467. {N} def
  6468. /F                    % - F -
  6469. {
  6470. _pola 0 eq 
  6471.     {
  6472.     _doClip 1 eq 
  6473.         {
  6474.         gsave _pf grestore clip newpath /_lp /none ddef _fc 
  6475.         /_doClip 0 ddef
  6476.         }
  6477.         {
  6478.         _pf
  6479.         }ifelse
  6480.     } 
  6481.     {
  6482.     /CRender {F} ddef
  6483.     }ifelse
  6484. } def
  6485. /f                    % - f -
  6486. {
  6487. closepath
  6488. F
  6489. } def
  6490. /S                    % - S -
  6491. {
  6492. _pola 0 eq 
  6493.     {
  6494.     _doClip 1 eq 
  6495.         {
  6496.         gsave _ps grestore clip newpath /_lp /none ddef _sc 
  6497.         /_doClip 0 ddef
  6498.         }
  6499.         {
  6500.         _ps
  6501.         }ifelse
  6502.     } 
  6503.     {
  6504.     /CRender {S} ddef
  6505.     }ifelse
  6506. } def
  6507. /s                    % - s -
  6508. {
  6509. closepath
  6510. S
  6511. } def
  6512. /B                    % - B -
  6513. {
  6514. _pola 0 eq 
  6515.     {
  6516.     _doClip 1 eq     % F clears _doClip
  6517.     gsave F grestore 
  6518.         {
  6519.         gsave S grestore clip newpath /_lp /none ddef _sc
  6520.         /_doClip 0 ddef
  6521.         } 
  6522.         {
  6523.         S
  6524.         }ifelse
  6525.     }
  6526.     {
  6527.     /CRender {B} ddef
  6528.     }ifelse
  6529. } def
  6530. /b                    % - b -
  6531. {
  6532. closepath
  6533. B
  6534. } def
  6535. /W                    % - W -
  6536. {
  6537. /_doClip 1 ddef
  6538. } def
  6539. /*                    % - [string] * -
  6540. {
  6541. count 0 ne 
  6542.     {
  6543.     dup type (stringtype) eq {pop} if
  6544.     } if 
  6545. _pola 0 eq {newpath} if
  6546. } def
  6547. % group operators
  6548. /u                    % - u -
  6549. {} def
  6550. /U                    % - U -
  6551. {} def
  6552. /q                    % - q -
  6553. {
  6554. _pola 0 eq {gsave} if
  6555. } def
  6556. /Q                    % - Q -
  6557. {
  6558. _pola 0 eq {grestore} if
  6559. } def
  6560. /*u                    % - *u -
  6561. {
  6562. _pola 1 add /_pola exch ddef
  6563. } def
  6564. /*U                    % - *U -
  6565. {
  6566. _pola 1 sub /_pola exch ddef 
  6567. _pola 0 eq {CRender} if
  6568. } def
  6569. /D                    % polarized D -
  6570. {pop} def
  6571. /*w                    % - *w -
  6572. {} def
  6573. /*W                    % - *W -
  6574. {} def
  6575. % place operators
  6576. /`                    % matrix llx lly urx ury string ` -
  6577. {
  6578. /_i save ddef
  6579. 6 1 roll 4 npop
  6580. concat pop
  6581. userdict begin
  6582. /showpage {} def
  6583. 0 setgray
  6584. 0 setlinecap
  6585. 1 setlinewidth
  6586. 0 setlinejoin
  6587. 10 setmiterlimit
  6588. [] 0 setdash
  6589. newpath
  6590. 0 setgray
  6591. false setoverprint
  6592. } def
  6593. /~                    % - ~ -
  6594. {
  6595. end
  6596. _i restore
  6597. } def
  6598. % color operators
  6599. /O                    % flag O -
  6600. {
  6601. 0 ne
  6602. /_of exch ddef
  6603. /_lp /none ddef
  6604. } def
  6605. /R                    % flag R -
  6606. {
  6607. 0 ne
  6608. /_os exch ddef
  6609. /_lp /none ddef
  6610. } def
  6611. /g                    % gray g -
  6612. {
  6613. /_gf exch ddef
  6614. /_fc
  6615. _lp /fill ne
  6616.     {
  6617.     _of setoverprint
  6618.     _gf setgray
  6619.     /_lp /fill ddef
  6620.     } if
  6621. } ddef
  6622. /_pf
  6623. {
  6624. _fc
  6625. fill
  6626. } ddef
  6627. /_psf
  6628. {
  6629. _fc
  6630. ashow
  6631. } ddef
  6632. /_pjsf
  6633. {
  6634. _fc
  6635. awidthshow
  6636. } ddef
  6637. /_lp /none ddef
  6638. } def
  6639. /G                    % gray G -
  6640. {
  6641. /_gs exch ddef
  6642. /_sc
  6643. {
  6644. _lp /stroke ne
  6645.     {
  6646.     _os setoverprint
  6647.     _gs setgray
  6648.     /_lp /stroke ddef
  6649.     } if
  6650. } ddef
  6651. /_ps
  6652. {
  6653. _sc
  6654. stroke
  6655. } ddef
  6656. /_pss
  6657. {
  6658. _sc
  6659. ss
  6660. } ddef
  6661. /_pjss
  6662. {
  6663. _sc
  6664. jss
  6665. } ddef
  6666. /_lp /none ddef
  6667. } def
  6668. /k                    % cyan magenta yellow black k -
  6669. {
  6670. _cf astore pop
  6671. /_fc
  6672. {
  6673. _lp /fill ne
  6674.     {
  6675.     _of setoverprint
  6676.     _cf aload pop setcmykcolor
  6677.     /_lp /fill ddef
  6678.     } if
  6679. } ddef
  6680. /_pf
  6681. {
  6682. _fc
  6683. fill
  6684. } ddef
  6685. /_psf
  6686. {
  6687. _fc
  6688. ashow
  6689. } ddef
  6690. /_pjsf
  6691. {
  6692. _fc
  6693. awidthshow
  6694. } ddef
  6695. /_lp /none ddef
  6696. } def
  6697. /K                    % cyan magenta yellow black K -
  6698. {
  6699. _cs astore pop
  6700. /_sc
  6701. {
  6702. _lp /stroke ne
  6703.     {
  6704.     _os setoverprint
  6705.     _cs aload pop setcmykcolor
  6706.     /_lp /stroke ddef
  6707.     } if
  6708. } ddef
  6709. /_ps
  6710. {
  6711. _sc
  6712. stroke
  6713. } ddef
  6714. /_pss
  6715. {
  6716. _sc
  6717. ss
  6718. } ddef
  6719. /_pjss
  6720. {
  6721. _sc
  6722. jss
  6723. } ddef
  6724. /_lp /none ddef
  6725. } def
  6726. /x                    % cyan magenta yellow black name gray x -
  6727. {
  6728. /_gf exch ddef
  6729. findcmykcustomcolor
  6730. /_if exch ddef
  6731. /_fc
  6732. _lp /fill ne
  6733.     {
  6734.     _of setoverprint
  6735.     _if _gf 1 exch sub setcustomcolor
  6736.     /_lp /fill ddef
  6737.     } if
  6738. } ddef
  6739. /_pf
  6740. {
  6741. _fc
  6742. fill
  6743. } ddef
  6744. /_psf
  6745. {
  6746. _fc
  6747. ashow
  6748. } ddef
  6749. /_pjsf
  6750. {
  6751. _fc
  6752. awidthshow
  6753. } ddef
  6754. /_lp /none ddef
  6755. } def
  6756. /X                    % cyan magenta yellow black name gray X -
  6757. {
  6758. /_gs exch ddef
  6759. findcmykcustomcolor
  6760. /_is exch ddef
  6761. /_sc
  6762. {
  6763. _lp /stroke ne
  6764.     {
  6765.     _os setoverprint
  6766.     _is _gs 1 exch sub setcustomcolor
  6767.     /_lp /stroke ddef
  6768.     } if
  6769. } ddef
  6770. /_ps
  6771. {
  6772. _sc
  6773. stroke
  6774. } ddef
  6775. /_pss
  6776. {
  6777. _sc
  6778. ss
  6779. } ddef
  6780. /_pjss
  6781. {
  6782. _sc
  6783. jss
  6784. } ddef
  6785. /_lp /none ddef
  6786. } def
  6787. % locked object operator
  6788. /A                    % value A -
  6789. {
  6790. pop
  6791. } def
  6792. currentdict readonly pop end
  6793. setpacking
  6794. % annotate page operator
  6795. /annotatepage
  6796. {
  6797. } def
  6798. %%EndResource
  6799. %%EndProlog
  6800. %%BeginSetup
  6801. %%IncludeFont: Helvetica
  6802. Adobe_cmykcolor /initialize get exec
  6803. Adobe_cshow /initialize get exec
  6804. Adobe_customcolor /initialize get exec
  6805. Adobe_typography_AI3 /initialize get exec
  6806. Adobe_IllustratorA_AI3 /initialize get exec
  6807. [
  6808. 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis
  6809. /Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute
  6810. /egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde
  6811. /oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex
  6812. /udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls
  6813. /registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash
  6814. /.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef
  6815. /.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash
  6816. /questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef
  6817. /guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe
  6818. /endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide
  6819. /.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright
  6820. /fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand
  6821. /Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex
  6822. /Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex
  6823. /Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla
  6824. /hungarumlaut/ogonek/caron
  6825. TE
  6826. %AI3_BeginEncoding: _Helvetica Helvetica
  6827. [/_Helvetica/Helvetica 0 0 1 TZ
  6828. %AI3_EndEncoding TrueType
  6829. %%EndSetup
  6830. 0 A
  6831. 0 O
  6832. 0 g
  6833. 0 i 0 J 0 j 1 w 4 M []0 d
  6834. %AI3_Note:
  6835. 0 D
  6836. -59.75 341.75 m
  6837. -59.75 431.75 L
  6838. -131.75 431.75 L
  6839. -131.75 341.75 L
  6840. -59.75 341.75 L
  6841. f
  6842. u
  6843. 66.25 341.75 m
  6844. 66.25 431.75 L
  6845. -5.75 431.75 L
  6846. -5.75 341.75 L
  6847. 66.25 341.75 L
  6848. f
  6849. U
  6850. u
  6851. 192.25 341.75 m
  6852. 192.25 431.75 L
  6853. 120.25 431.75 L
  6854. 120.25 341.75 L
  6855. 192.25 341.75 L
  6856. f
  6857. U
  6858. 0 0.1 0 0 k
  6859. 1 R
  6860. 0 G
  6861. 0.75 w
  6862. -62 344 m
  6863. -62 434 L
  6864. -134 434 L
  6865. -134 344 L
  6866. -62 344 L
  6867. b
  6868. u
  6869. 64 344 m
  6870. 64 434 L
  6871. -8 434 L
  6872. -8 344 L
  6873. 64 344 L
  6874. b
  6875. U
  6876. u
  6877. 190 344 m
  6878. 190 434 L
  6879. 118 434 L
  6880. 118 344 L
  6881. 190 344 L
  6882. b
  6883. U
  6884. u
  6885. 1 g
  6886. 1 w
  6887. 144.8749 391.0595 m
  6888. 147.8747 391.0984 163.2126 391.0595 y
  6889. 165.6689 391.3782 165.6689 388.1532 v
  6890. 165.6689 384.9282 165.6689 381.1969 y
  6891. 166.7282 382.2563 l
  6892. 167.8626 383.7469 167.7126 380.8969 v
  6893. 167.7126 372.7968 l
  6894. 167.5626 371.5218 166.6626 372.4968 v
  6895. 165.6876 373.3968 l
  6896. 165.6876 366.8717 l
  6897. 165.8376 364.0217 163.2876 364.0217 v
  6898. 160.7376 364.0217 144.9124 364.0217 y
  6899. 142.4374 363.2717 142.4374 366.7967 v
  6900. 142.4374 370.9218 142.4374 371.9718 y
  6901. 143.3374 371.4468 l
  6902. 144.9124 370.3218 144.8374 372.6468 v
  6903. 144.7528 375.2705 144.8374 382.2469 y
  6904. 144.7624 384.0469 143.5624 383.1469 v
  6905. 142.3624 382.2469 142.4374 382.3219 y
  6906. 142.4374 388.1719 l
  6907. 141.9874 391.022 144.8749 391.0595 v
  6908. b
  6909. U
  6910. u
  6911. 0 To
  6912. 1 0 0 1 154.2686 411.9482 0 Tp
  6913. TP
  6914. -20.6719 0 Td
  6915. 0 Tr
  6916. 1 O
  6917. 0 g
  6918. /_Helvetica 8 Tf
  6919. 0 Ts
  6920. 100 Tz
  6921. 0 Tt
  6922. 0 TA
  6923. 0 0 5 TC
  6924. 100 100 200 TW
  6925. 0 0 0 Ti
  6926. 1 Ta
  6927. 0 Tq
  6928. 9 0 Tl
  6929. 0 Tc
  6930. 0 Tw
  6931. (Component) Tx
  6932. (\r) TX 
  6933. 20.6719 -9 Td
  6934. (\r) TX 
  6935. TO
  6936. U
  6937. u
  6938. 0 O
  6939. 1 g
  6940. 1 R
  6941. 0 G
  6942. 41.9221 386.8595 m
  6943. 41.9611 383.8597 41.9221 368.5218 y
  6944. 42.2409 366.0656 39.0159 366.0656 v
  6945. 35.7908 366.0656 32.0595 366.0656 y
  6946. 33.119 365.0062 l
  6947. 34.6096 363.8718 31.7595 364.0218 v
  6948. 23.6595 364.0218 l
  6949. 22.3844 364.1718 23.3595 365.0718 v
  6950. 24.2595 366.0468 l
  6951. 17.7344 366.0468 l
  6952. 14.8844 365.8968 14.8844 368.4468 v
  6953. 14.8844 370.9968 14.8844 386.822 y
  6954. 14.1344 389.297 17.6594 389.297 v
  6955. 21.7844 389.297 22.8344 389.297 y
  6956. 22.3095 388.397 l
  6957. 21.1844 386.822 23.5095 386.897 v
  6958. 26.1332 386.9816 33.1096 386.897 y
  6959. 34.°¿P9096 386.972 34.0096 388.172 v
  6960. 33.1096 389.372 33.1846 389.297 y
  6961. 39.0346 389.297 l
  6962. 41.8846 389.747 41.9221 386.8595 v
  6963. b
  6964. 1 O
  6965. 0 g
  6966. 21.9626 382.8845 m
  6967. 20.0126 378.9844 l
  6968. 20.0126 374.7844 l
  6969. 22.1126 370.4343 l
  6970. 25.9376 368.1843 l
  6971. 29.6127 367.8843 l
  6972. 32.6127 369.6843 l
  6973. 33.9627 368.3343 l
  6974. 37.4127 368.3343 l
  6975. 37.7127 370.8843 l
  6976. 35.7627 372.9844 l
  6977. 36.8127 375.3844 l
  6978. 36.5877 378.6094 l
  6979. 34.7127 381.5345 l
  6980. 32.1627 383.7845 l
  6981. 29.3127 384.9845 l
  6982. 25.5626 384.9845 l
  6983. 21.9626 382.8845 l
  6984. f
  6985. 0 O
  6986. 1 g
  6987. 26.7626 381.6845 m
  6988. 23.7626 379.7344 l
  6989. 23.2376 376.2844 l
  6990. 24.5126 372.9844 l
  6991. 28.1126 370.9594 l
  6992. 31.8627 372.6844 l
  6993. 33.5877 376.1344 l
  6994. 32.6877 379.8094 l
  6995. 30.0627 381.3844 l
  6996. 26.7626 381.6845 l
  6997. f
  6998. 1 O
  6999. 0 g
  7000. 26.4626 376.5844 m
  7001. 26.6126 374.0344 29.4627 375.5344 v
  7002. 34.5627 380.9345 l
  7003. 35.0877 384.6845 32.5377 383.2595 v
  7004. 32.4627 382.2845 33.5127 381.3844 v
  7005. 32.4627 380.1844 l
  7006. 31.1127 381.2345 l
  7007. 28.1126 378.0844 l
  7008. 29.6127 377.1844 28.5627 376.2844 v
  7009. 28.4126 375.4594 26.4626 376.5844 v
  7010. f
  7011. 0 O
  7012. 1 g
  7013. 32.3127 383.4845 m
  7014. 31.7877 381.6095 31.1127 381.2345 v
  7015. 32.4627 380.1844 l
  7016. 33.5127 381.3844 l
  7017. 32.3127 382.2095 32.5377 383.2595 v
  7018. 32.7627 384.3095 32.3127 383.4845 y
  7019. f
  7020. U
  7021. u
  7022. 0 To
  7023. 1 0 0 1 28.2686 411.9482 0 Tp
  7024. TP
  7025. -20.6719 0 Td
  7026. 0 Tr
  7027. 1 O
  7028. 0 g
  7029. (Component) Tx
  7030. (\r) TX 
  7031. 4.8916 -9 Td
  7032. (Manager) Tx 
  7033. (\r) TX 
  7034. TO
  7035. U
  7036. 0 To
  7037. 1 0 0 1 -99.2314 411.9482 0 Tp
  7038. TP
  7039. -19.5605 0 Td
  7040. 0 Tr
  7041. 8 0 Tl
  7042. (Application) Tx 
  7043. (\r) TX 
  7044. TO
  7045. 0 O
  7046. 1 g
  7047. 1 R
  7048. 0 G
  7049. 2 j
  7050. -99.3125 392.7812 m
  7051. -83.8125 377.2812 l
  7052. -99 362.0937 l
  7053. -115.0625 378.1562 l
  7054. -99.3125 392.7812 l
  7055. b
  7056. -99.6875 376.0312 m
  7057. -98.125 377.7187 l
  7058. -97.125 378.9687 -96 378.8437 v
  7059. -94.875 378.7187 -92.1875 378.7812 y
  7060. -87 373.6562 l
  7061. -86.5625 367.5312 l
  7062. -89.625 369.3437 l
  7063. -93.8125 369.4062 l
  7064. -95.9132 369.6753 -96.875 370.1562 v
  7065. -98.125 370.7812 -99.6875 372.2187 y
  7066. -100.2634 373.1745 -100.5 374.5937 v
  7067. -100.5625 374.9687 -99.4375 375.0312 -98.875 374.4687 c
  7068. -98.5563 374.15 -97.3125 372.4687 y
  7069. -95.75 372.5312 l
  7070. -94.3125 373.7812 l
  7071. -94.8125 374.9062 l
  7072. -96.1875 377.0312 -97.4375 375.6562 v
  7073. -98.3776 374.6221 -99.9375 375.2812 -99.6875 376.0312 c
  7074. b
  7075. 1 O
  7076. 0 g
  7077. 0 j
  7078. -87 374.3437 m
  7079. -84.0625 374.0312 l
  7080. -84.0625 366.2812 l
  7081. -86.3125 366.2812 l
  7082. -88.6875 368.7812 l
  7083. -86.125 366.4062 -87 374.3437 v
  7084. f
  7085. -90.5625 374.4062 m
  7086. -90.5625 373.3437 l
  7087. -97.8125 373.3437 l
  7088. -98.875 374.4687 l
  7089. -90.5625 374.4062 l
  7090. f
  7091. -100.5 374.5937 m
  7092. -103.4375 374.5937 l
  7093. -103.875 373.4062 -103 373.4062 v
  7094. -102.125 373.4062 -100.25 373.4062 y
  7095. -100.5 374.5937 l
  7096. f
  7097. 0 O
  7098. 1 g
  7099. 0 R
  7100. 0 G
  7101. 0.5 w
  7102. -98 389 m
  7103. B
  7104. 0 To
  7105. 1 0 0 1 -134 483.5107 0 Tp
  7106. TP
  7107. 0 Tr
  7108. 0 g
  7109. 1 w
  7110. 0 Ta
  7111. 9 0 Tl
  7112. (Application uses ) Tx
  7113. (\r) TX 
  7114. T*
  7115. (Component Manager) Tx
  7116. (\r) TX 
  7117. T*
  7118. (to get component) Tx
  7119. (\r) TX 
  7120. T*
  7121. (connection and call) Tx
  7122. (\r) TX 
  7123. T*
  7124. (component function.) Tx 
  7125. (\r) TX 
  7126. TO
  7127. 0 To
  7128. 1 0 0 1 -7.9521 492.2607 0 Tp
  7129. TP
  7130. 0 Tr
  7131. (Component Manager ) Tx
  7132. (\r) TX 
  7133. T*
  7134. (sends application\325s ) Tx
  7135. (\r) TX 
  7136. T*
  7137. (request for component ) Tx
  7138. (\r) TX 
  7139. T*
  7140. (function to proper ) Tx
  7141. (\r) TX 
  7142. T*
  7143. (component for ) Tx
  7144. (\r) TX 
  7145. T*
  7146. (execution.) Tx 
  7147. (\r) TX 
  7148. TO
  7149. 0 To
  7150. 1 0 0 1 117.9561 465.4482 0 Tp
  7151. TP
  7152. 0 Tr
  7153. (Component executes ) Tx
  7154. (\r) TX 
  7155. T*
  7156. (function call and ) Tx
  7157. (\r) TX 
  7158. T*
  7159. (returns result.) Tx 
  7160. (\r) TX 
  7161. TO
  7162. u
  7163. u
  7164. 0 R
  7165. 0 G
  7166. 0.5 w
  7167. -53.5389 389.0076 m
  7168. -14.2359 389.0076 l
  7169. S
  7170. 0 O
  7171. 0 g
  7172. 1 w
  7173. -51.7889 386.3334 m
  7174. -57.564 388.9146 l
  7175. -51.7889 391.5396 l
  7176. -53.5389 388.9584 l
  7177. -51.7889 386.3334 l
  7178. f
  7179. U
  7180. -15.8875 391.6031 m
  7181. -10.1124 389.0219 l
  7182. -15.8875 386.3969 l
  7183. -14.1375 388.9781 l
  7184. -15.8875 391.6031 l
  7185. f
  7186. U
  7187. u
  7188. u
  7189. 0 R
  7190. 0 G
  7191. 0.5 w
  7192. 72.2993 388.9769 m
  7193. 111.6023 388.9769 l
  7194. S
  7195. 0 O
  7196. 0 g
  7197. 1 w
  7198. 74.0493 386.3027 m
  7199. 68.2742 388.8839 l
  7200. 74.0493 391.5089 l
  7201. 72.2993 388.9277 l
  7202. 74.0493 386.3027 l
  7203. f
  7204. U
  7205. 109.9507 391.5724 m
  7206. 115.7258 388.9911 l
  7207. 109.9507 386.3661 l
  7208. 111.7007 388.9474 l
  7209. 109.9507 391.5724 l
  7210. f
  7211. U
  7212. %%PageTrailer
  7213. gsave annotatepage grestore showpage
  7214. %%Trailer
  7215. Adobe_IllustratorA_AI3 /terminate get exec
  7216. Adobe_typography_AI3 /terminate get exec
  7217. Adobe_customcolor /terminate get exec
  7218. Adobe_cshow /terminate get exec
  7219. Adobe_cmykcolor /terminate get exec
  7220. Adobe_packedarray /terminate get exec
  7221. %%EOF
  7222. ñ◊#ˇ ˇˇˇˇ#◊ 
  7223. d, Palatino
  7224. .°dONLNd$ñ0    +¥LPComponent Manager maps to the component functions. Let’s take a look at both the°dONLNdQ0ñ<¶* ;component functions and the component dispatcher in detail.,     Helvetica
  7225.     °dONLNdçMñX*COMPONENT FUNCTIONS
  7226. °dONLNd°Xñd* PThere are two groups of functions that are implemented in a component. One group°dONLNdÚdñp* Rdoes the custom work that’s unique to the component. The nature of these functions°dONLNdEpñ|* Qdepends on the capabilities that the component is intended to provide to clients.°dONLNdó|ñà * NFor example, the movie controller component, which plays QuickTime movies, has°dONLNdÊàñî * Va number of functions in this category that control the position, playback rate, size,°dONLNd=îñ†
  7227. * Qand other movie characteristics. Each function defined in your component API must°dONLNdè†ñ¨
  7228. * Shave a corresponding request code, and you must assign these request codes positive°dONLNd„¨ñ∏Ù* values (0 or greater).°dONLNd˙ƒñ–fi*IThe second group of functions comprises the standard calls defined by the°dONLNdD–ñ‹* QComponent Manager for use by a component. Currently, four of these standard calls°dONLNdñ‹ñË´* must°dONLNdö‹´Ë)N be implemented by every component: open, close, can do, and version. Two more°dONLNdÈËñÙ (¥Vrequest codes, register and target, are defined, but supporting these is optional. The°dONLNd@Ùñ›* Istandard calls are represented by negative request codes and are defined °dONLNdâÙ›Ò(˚only°dONLNdçÙÒ˛) by°dONLNdëñ ∂((¥Apple.°dONLNdôñ$Ç*6Here’s a quick look at each of the six standard calls.
  7229.     °dONLNd–1ñ<Û*The open function.°dONLNd‚1Û<ˆ)] 
  7230. °dONLNd„0ˆ<Ì)6The open function gives a component the opportunity to°dONLNd<ñH(d¥Tinitialize itself before handling client requests, and in particular to allocate any°dONLNdoHñTÈ* Lprivate storage it may need. Private storage is useful if your component has°dONLNdºTñ`* Phardware-dependent settings, local environment settings, cached data structures,°dONLNd
  7231. `ñlÊ* JIDs of component instances that may provide services to your component, or°dONLNdXlñxd* ,anything else you might want to keep around.
  7232.     °dONLNdÜÖñêˆ*The close function.°dONLNdôÖˆê˘)` 
  7233. °dONLNdöÑ˘êÙ)8The close function provides for an orderly shutdown of a°dONLNd”êñú(∏¥Rcomponent. For simple components, closing mainly involves disposing of the private°dONLNd&úñ®Ï* Lstorage created in the open function. For more complex components, it may be°dONLNds®ñ¥¥* ?necessary to close supporting components and to reset hardware.
  7234.     °dONLNd¥¡ñø*The can do function.°dONLNd»¡¸Ãˇ)f 
  7235. °dONLNd…¿ˇÃ);The can do function tells an application which functions in°dONLNdÃñÿ(Ù¥Sthe component’s API are supported. Clients that need to query a component about its°dONLNdYÿñ‰Ï* Icapabilities can use the ComponentFunctionImplemented routine to send the°dONLNd£‰ñ* component a can do request.
  7236.     °dONLNd¿˝ñ*The version function.°dONLNd’˝)j 
  7237. °dONLNd÷¸Ù)5The version function provides two important pieces of°dONLNd     ñ(0¥Ninformation: the component specification level and the implementation level. A°dONLNd    [ñ 
  7238. * Tchange in the specification level normally indicates a change in the basic API for a°dONLNd    ∞ ñ,ˆ* Lparticular component class, while implementation-level changes indicate, for°dONLNd    ˝,ñ8p* 1example, a bug fix or the use of a new algorithm. xBx/,Times
  7239. ({% 
  7240. +
  7241. 12
  7242. +md)e)v)e)l)o)p)  
  7243. )
  7244. December 1992ˇr◊#ˇ ˇˇˇˇ#◊ 
  7245. d,     Helvetica
  7246.     .°dONLNd%0Ñ+6LThe register function.°dONLNd%Ñ0á)l , Palatino
  7247. °dONLNd$á0y)5The register function allows a component to determine°dONLNdM0<w(X6Mwhether it can function properly with the current system configuration. Video°dONLNdõ<HÖ* Sdigitizer components, for example, typically use register requests to check for the°dONLNdÔHTÜ* Qpresence of their corresponding digitizing hardware before accepting registration°dONLNdAT`â* Pwith the Component Manager. A component receives a register request code only if°dONLNdí`lv* Nit explicitly asks for it. We’ll see how this is done when we walk through our°dONLNd·lxm* sample component.
  7248.     °dONLNdÙÖê{*The target function.°dONLNdÖ{ê~)c 
  7249. °dONLNd    Ñ~êr)6The target function informs your component it has been°dONLNd@êú@(∏6captured°dONLNdHê@úä)(I by another component. Capturing a component is similar to subclassing an°dONLNdíú®Å(ƒ6Pobject, in that the captured component is superseded by the capturing component.°dONLNd„®¥Ñ* NThe captured component is replaced by the capturing component in the component°dONLNd2¥¿~* Tregistration list and is no longer available to clients. We’ll discuss the notion of°dONLNdá¿Ã÷* *capturing components in more detail later.
  7250.     °dONLNd≥›˵*THE COMPONENT DISPATCHER
  7251. °dONLNdÕËÙå* RAll components must have a main entry point consisting of a dispatcher that routes°dONLNd Ù~* Lthe requests the client application sends via the Component Manager. When an°dONLNdm j* Happlication calls a component function, the Component Manager passes two°dONLNd∂ é* Nparameters to the component dispatcher — a ComponentParameters structure and a°dONLNd$è* Shandle to any private storage that was set up in the component’s open function. The°dONLNdY$0Ó* .ComponentParameters structure looks like this:,
  7252. Courier
  7253.     °dONLNdà=Hh*typedef struct {°dONLNdöI&Tl+ unsigned char °dONLNd©I}Tõ)Wflags;°dONLNd≤U&`l(|Dunsigned char °dONLNd¡U}`Ø)W
  7254. paramSize;°dONLNd–a&lD(àDshort °dONLNd⁄a}lñ)Wwhat;°dONLNdÁm&x?(îDlong °dONLNdm}x)Wparams[kSmallestArray];°dONLNd
  7255. yÑÜ(†6} ComponentParameters;
  7256. °dONLNd!êúÄ*OThe first two fields are used internally by the Component Manager and aren’t of°dONLNdqú®Ö* Qmuch interest here. The what field contains the request code corresponding to the°dONLNd√®¥Ä* Ncomponent function call made by the application. The params field contains the°dONLNd¥¿¿* #parameters that accompany the call.°dONLNd6Ãÿ]*GFigure 3 shows a detailed view of how a component function call from an°dONLNd~ÿ‰ê* Qapplication is processed. The component dispatcher examines the what field of the°dONLNd–‰x* LComponentParameters record to determine the request code, and then transfers°dONLNd¸Ë* .control to the appropriate component function.
  7257.     °dONLNdL
  7258. Æ*REGISTERING A COMPONENT
  7259. °dONLNdd$* PBefore a component can be used by an application, it must be registered with the°dONLNdµ$0á* HComponent Manager. This way the Component Manager knows which components°dONLNd˛0<Q* Eare available when it’s asked to open a particular type of component. x4x&,Times
  7260. ({) 
  7261. +
  7262. 13
  7263. (Ú*1TECHNIQUES FOR WRITING AND DEBUGGING COMPONENTS  
  7264. )”
  7265. December 1992ˇb◊#ˇ ˇˇˇˇ#◊ 
  7266. 6qô,"6q°d
  7267. ONLNfH"ô,°d
  7268. ONLNfÅP†Ç†é
  7269. 45p6qò8@ª@ª6qv,………    ›ˇ    ›    ›    ›    ›    ›    ›    ›    ›    ›    ››IJˆ›Y˜çÈ›%T¶ìDˆ›%T¶üDˆ›eT¶ëDˆ›ôWçDˆ ›Û ›Û    ›    ›    ›    ›    ›
  7270. ›ˇˇÙ,ˆÄ¿@˝˝Δ¸@?ˇˇÄ‰ 0˜y‘Õ÷ôP˝!õÁ3ôÿ«ú«f#9»?ˇˇÄúÕ∏ÿv39ê0˜e5&“¢M`˝!&§ •HΔ‘iîD™Pˇˇ¿fi0ôL `0˜Â5“¢5P˝!&§ ΩH´U©Ù'™Hˇˇ¿ì¶)üDÀ–0˜%52“¢eH˝!¶§ °H™U)Ñ*Dˇˇ¿S&iòL 0˜9‘ŒÃ°ùP˝!ß2ôHì‘Ád#)»ˇˇ¿‰ú®–v39êˆ!ı¸¸ˇˇ¿˝˙ˆ!ı¸¸ˇˇ¿˝˙›oˇˇ‡ı$ÚÄÄ˚¸ˇˇ˚@Ä1˜-7Œ73±◊õÄ Œ¶L39É6ÿúŒw顡òÙƒΔc∞n81˜-ÕIMJê’%¶Ä    2©ÑL DÕ*ñíˇˇ%5(Iî»:H1˜-MIMzê’!¶Ä    ÚØDDÀƒLºì*ñíˇˇ=5‰Hî¯⁄H1˜-ÕIMBê’%¶Ä    ®$L ÆS*ñíˇˇ!5Iî¿öH1˜-5N52êıöêŒÊD39É4òú v顡¸ƒFc∞z8ı˜˙
  7271. ˇˇ˝ ˙ı˜˙
  7272.  ˇˇ˝ ˙›ˇˇı"ÎÄ ¸Ä˛ˇˇ˝†˛%Î
  7273.  
  7274. ɱ-é3>„qπIJˇˇ¿˛
  7275. îùõúŸÄ)Û˙
  7276. D *RL™î“hIJˇˇ¿&∞S&Tj@)Û˙
  7277. D˘+“D™î”ËIJˇˇ¿®6S&U´¿)Û˙
  7278. D¿™L™î“(IJˇˇ¿2§&S&U*)Û˙
  7279. ɱ)é3*„Q®Ä˛ˇˇ¿˛
  7280. Œ®ùîÈÄÛÛÄ˚ˇˇ¿¸˝ÛÛÄ˚?ˇˇ¿¸˝ÛÏ?ˇˇÄı Û˙ ` `ı P$Û˙ú‹Œ78V¯uΔʇ˘
  7281. Ã˘ÕΔÊtÊ÷p%Û˙ï-*
  7282. MHVh5Ii†˙ 2©3I¢4©YP%Û˙ï
  7283. *5MHVh5Hi†˙ ©3O¢4®YP%Û˙ï-*%MHVh5Ii†˙ 2©3H¢4©YP$Û˙îà58*h=Ff†˘
  7284. éÕF¢<¶VPÛÙ˙¯˙ÛÙ0˙¯˙
  7285. ÛÏò8@Ī@Īvq∂,ۈį˘¿˛˛Û˙foç≥@˘˘
  7286. ≠Êl¯€4Û˙    4:í Ä˘˘
  7287. ¨–ìF©,®Û˙    ‘⁄û˙@˘˘
  7288. ¨–ùZ©Ô§Û˙    îöꬠ˘˘
  7289. ¨–ôR© "Û˙tzå≤H˘˘
  7290. T–ÁN®À$ÄÛ˙˙¸˜Ä˚Û˙˙¸˜Ä˚ÛÚ¸Ù˛ÛÚ¸Ù˛ÛÚ¸Ù˛ÛÚ¸Ù˛ÛÚ¸Ù˛ÛÚ¸Ù˛ÛÚ¸Ù˛ÛÚ¸Ù˛ÛÚ¸Ù˛ÛÚ¸Ù˛ÛÚ¸Ù˛ÛÚ¸˛˘ˇ¸˛'?˘ˇ‡˝˛?˘ˇ‡¸˛˘ˇ¸˛'?˘ˇ‡˝˛?˘ˇ‡¸˛˘ˇ¸˛&?˘ˇ¯˝˛?˘ˇ¯¸˛¯ˇ˛&?˘ˇ¯˝˛?˘ˇ¯¸˛¯ˇ˛&?˘ˇ¯˝˛?˘ˇ¯¸˛¯ˇ˛&?˘ˇ¯˝˛?˘ˇ¯¸˛¯ˇ˛&?˘ˇ¯˝˛?˘ˇ¯¸˛¯ˇ˛&?˘ˇ¯˝˛?˘ˇ¯¸˛¯ˇ˛&?˘ˇ¯˝˛?˘ˇ¯¸˛¯ˇ˛&?˘ˇ¯˝˛?˘ˇ¯¸˛¯ˇ˛&?˘ˇ¯˝˛?˘ˇ¯¸˛¯ˇ˛&?˘ˇ¯˝˛?˘ˇ¯¸˛¯ˇ˛&?˘ˇ¯˝˛?˘ˇ¯¸˛¯ˇ˛&?˘ˇ¯˝˛?˘ˇ¯¸˛¯ˇ˛&?˘ˇ¯˝˛?˘ˇ¯¸˛¯ˇ˛&?˘ˇ¯˝˛?˘ˇ¯¸˛¯ˇ˛&?˘ˇ¯˝˛?˘ˇ¯¸˛¯ˇ˛&?˘ˇ¯˝˛?˘ˇ¯¸˛¯ˇ˛&?˘ˇ¯˝˛?˘ˇ¯¸˛¯ˇ˛&?˘ˇ¯˝˛?˘ˇ¯¸˛¯ˇ˛&?˘ˇ¯˝˛?˘ˇ¯¸˛¯ˇ˛&?˘ˇ¯˝˛?˘ˇ¯¸˛¯ˇ˛&?˘ˇ¯˝˛?˘ˇ¯¸˛¯ˇ˛&?˘ˇ¯˝˛?˘ˇ¯¸˛¯ˇ˛&?˘ˇ¯˝˛?˘ˇ¯¸˛¯ˇ˛&?˘ˇ¯˝˛?˘ˇ¯¸˛¯ˇ˛&?˘ˇ¯˝˛?˘ˇ¯¸˛¯ˇ˛&?˘ˇ¯˝˛?˘ˇ¯¸˛¯ˇ˛&?˘ˇ¯˝˛?˘ˇ¯¸˛¯ˇ˛&?˘ˇ¯˝˛?˘ˇ¯¸˛¯ˇ˛?˘ˇ¯˘?˘ˇ¯˘˛¯ˇ˛!?˘ˇ¯˚?˘ˇ¯˘¯ˇ˛!?˘ˇ¯˚‡?˘ˇ¯˘¯ˇ˛ ?˘ˇ¯˙¯?˘ˇ¯˘á¯ˇ˛?˘ˇ¯˙ˇ¸?˘ˇ¯ˆˇ«¯ˇ˛ ?˘ˇ¯˙¯?˘ˇ¯˘á¯ˇ˛!?˘ˇ¯˚‡?˘ˇ¯˘¯ˇ˛!?˘ˇ¯˚?˘ˇ¯˘¯ˇ˛?˘ˇ¯˘?˘ˇ¯˘˛¯ˇ˛!?˘ˇ¯˙?˘ˇ¯˙˛¯ˇ˛?˘ˇ¯˙?˘ˇ¯˙˛¯ˇ˝?˘ˇ¯>˙?˘ˇ¯|˙˛¯ˇ˝?˘ˇ¯˚ˇ¸?˘ˇ¯ıˇá¯ˇ˝!?˘ˇ¯>˙?˘ˇ¯|˙˛¯ˇ˛ò8ÄÆªÄƪ∂q‰,!?˘ˇ¯˙?˘ˇ¯˙˛¯ˇ!?˘ˇ¯˙?˘ˇ¯˙˛¯ˇÄ?˘ˇ¯˘?˘ˇ¯˘˛¯ˇÄ?˘ˇ¯˘?˘ˇ¯˘˛¯ˇ¿%?˘ˇ¯˛˝?˘ˇ¯˚‡˛¯ˇ@'?˘ˇ¯˛IJ?˘ˇ¯¸Ä˛¯ˇ@&?˘ˇ¯˝¿˛?˘ˇ¯¸˛¯ˇ@&?˘ˇ¯˝`˛?˘ˇ¯¸˛¯ˇ@&?˘ˇ¯˝ ˛?˘ˇ¯¸˛¯ˇ@&?˘ˇ¯˝0˛?˘ˇ¯¸0˛¯ˇ@&?˘ˇ¯˝˛?˘ˇ¯¸`˛¯ˇ@'?˘ˇ¯˝ ˛?˘ˇ¯˝¿˛¯ˇ@'?˘ˇ¯˝˛?˘ˇ¯˝˛˛¯ˇ@'?˘ˇ¯˝˛?˘ˇ¯˝˛˛¯ˇ@'?˘ˇ¯˝˛?˘ˇ¯˝ ˛˛¯ˇ@'?˘ˇ¯˝Ä?˘ˇ¯˝8˛˛¯ˇ@&?˘ˇ¯¸¿?˘ˇ¯˝`˛˛¯ˇ@&?˘ˇ¯¸@?˘ˇ¯˝¿˛˛¯ˇ@'?˘ˇ¯¸`?˘ˇ¯˛IJ˛¯ˇ@&?˘ˇ¯¸0?˘ˇ¯˛˝˛¯ˇ@&?˘ˇ¯¸?˘ˇ¯˛ ˝˛¯ˇ@&?˘ˇ¯¸?˘ˇ¯˛˝˛¯ˇ@&?˘ˇ¯¸ ?˘ˇ¯˛p˝˛¯ˇ@&?˘ˇ¯¸?˘ˇ¯˛¿˝˛¯ˇ@&?˘ˇ¯¸?˘ˇ¯Ä˝˛¯ˇ@%?˘ˇ¯¸Ä?˘ˇ¯¸˛¯ˇ@$?˘ˇ¯˚Ä?˘ˇ¯¸˛¯ˇ@$?˘ˇ¯˚¿?˘ˇ¯¸˛¯ˇ@$?˘ˇ¯˚`?˘ˇ¯0¸˛¯ˇ@$?˘ˇ¯˚0?˘ˇ¯‡¸˛¯ˇ@$?˘ˇ¯˚?˘ˇ¯ĸ˛¯ˇ@#?˘ˇ¯˚?˘ˇ¯˚˛¯ˇ@#?˘ˇ¯˚ ?˘ˇ¯˚˛¯ˇ@#?˘ˇ¯˚?˘ˇ¯˚˛¯ˇ@#˘ˇ¯˚˘ˇ¯0˚˛¯ˇ@#˘ˇ¯˚˘ˇ¯`˚˛¯ˇ@ÒĈ¿˚Ú@¿˜Ä˚˘0˚@`˜˙˘0˚@ ˜ ˙˘p˚@0˜8˙˘x˚@˜`˙˘x˚@ ˜¿˙˘¸˚@¯Ä˙˘Ï˚@¯˘˘ ˚@¯ ˘˘ ˚@òź@ªHHQoD ∞IJˇˇˇˇˇˇˇˇˇˇÃÃˇˇˇˇôôˇˇˇˇffˇˇˇˇ33ˇˇˇˇˇˇÃÃˇˇˇˇÃÃÃÃˇˇÃÃôô    ˇˇÃÃff
  7291. ˇˇÃÃ33 ˇˇÃà ˇˇôôˇˇ
  7292. ˇˇôôÃÃˇˇôôôôˇˇôôffˇˇôô33ˇˇôôˇˇffˇˇˇˇffÃÃˇˇffôôˇˇffffˇˇff33ˇˇffˇˇ33ˇˇˇˇ33ÃÃˇˇ33ôôˇˇ33ffˇˇ3333ˇˇ33ˇˇˇˇˇˇÃàˇˇôô!ˇˇff"ˇˇ33#ˇˇ$ÃÃˇˇˇˇ%ÃÃˇˇÃÃ&ÃÃˇˇôô'ÃÃˇˇff(ÃÃˇˇ33)ÃÃˇˇ*ÃÃÃÃˇˇ+ÃÃÃÃÃÃ,ÃÃÃÃôô-ÃÃÃÃff.ÃÃÃÃ33/ÃÃÃÃ0ÃÃôôˇˇ1ÃÃôôÃÃ2ÃÃôôôô3ÃÃôôff4ÃÃôô335ÃÃôô6ÃÃffˇˇ7ÃÃffÃÃ8ÃÃffôô9ÃÃffff:ÃÃff33;ÃÃff<ÃÃ33ˇˇ=ÃÃ33ÃÃ>ÃÃ33ôô?ÃÃ33ff@ÃÃ3333AÃÃ33BÃÃˇˇCÃÃÃÃDÃÃôôEÃÃffFÃÃ33GÃÃHôôˇˇˇˇIôôˇˇÃÃJôôˇˇôôKôôˇˇffLôôˇˇ33MôôˇˇNôôÃÃˇˇOôôÃÃÃÃPôôÃÃôôQôôÃÃffRôôÃÃ33SôôÃÃTôôôôˇˇUôôôôÃÃVôôôôôôWôôôôffXôôôô33YôôôôZôôffˇˇ[ôôffÃÃ\ôôffôô]ôôffff^ôôff33_ôôff`ôô33ˇˇaôô33ÃÃbôô33ôôcôô33ffdôô3333eôô33fôôˇˇgôôÃÃhôôôôiôôffjôô33kôôlffˇˇˇˇmffˇˇÃÃnffˇˇôôoffˇˇffpffˇˇ33qffˇˇrffÃÃˇˇsffÃÃÃÃtffÃÃôôuffÃÃffvffÃÃ33wffÃÃxffôôˇˇyffôôÃÃzffôôôô{ffôôff|ffôô33}ffôô~ffffˇˇffffÃÃÄffffôôÅffffffÇffff33ÉffffÑff33ˇˇÖff33ÃÃÜff33ôôáff33ffàff3333âff33äffˇˇãffÃÃåffôôçfffféff33èffê33ˇˇˇˇë33ˇˇÃÃí33ˇˇôôì33ˇˇffî33ˇˇ33ï33ˇˇñ33ÃÃˇˇó33ÃÃÃÃò33ÃÃôôô33ÃÃffö33ÃÃ33õ33ÃÃú33ôôˇˇù33ôôÃÃû33ôôôôü33ôôff†33ôô33°33ôô¢33ffˇˇ£33ffÃç33ffôô•33ffff¶33ff33ß33ff®3333ˇˇ©3333ÃÙ3333ôô´3333ff¨333333≠3333Æ33ˇˇØ33ÃÃ∞33ôô±33ff≤3333≥33¥ˇˇˇˇµˇˇÃÃ∂ˇˇôô∑ˇˇff∏ˇˇ33πˇˇ∫ÃÃˇˇªÃÃÃúÃÃôôΩÃÃffæÃÃ33øÃÿôôˇˇ¡ôôÃìôôôô√ôôffƒôô33≈ôôΔffˇˇ«ffÃûffôô…ffff ff33ÀffÃ33ˇˇÕ33ÃÃŒ33ôôœ33ff–3333—33“ˇˇ”ÃÑôô’ff÷33◊ÿˇˇˇŸ˘`˘`˘`⁄Ú–Ú–Ú–€Ï@Ï@Ï@‹Â∞Â∞Â∞›fl fl fl fiÿêÿêÿêfl“““‡ÀpÀpÀp·ƒ‡ƒ‡ƒ‡‚æPæPæP„∑¿∑¿∑¿‰±0±0±0™†™†™†Ê§§§ÁùÄùÄùÄËñññÈê`ê`ê`Íâ–â–â–ÎÉ@É@É@Ï|∞|∞|∞Ìv v v ÓoêoêoêÔiiibpbpbpÒ[‡[‡[‡ÚUPUPUPÛN¿N¿N¿ÙH0H0H0ıA†A†A†ˆ;;;˜4Ä4Ä4į---˘'`'`'`˙ – – –˚@@@¸∞∞∞˝
  7293.  
  7294.  
  7295.  ˛êêê@ª6qv,'ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ ÅÅfiŎˇ˘ÅÅfiˇÅÚˇ˘ÅÅfiˇÅÚˇ˘ÅÅfiˇÅÚˇ˘ÅÅfiˇÅÚˇ˘ÅÅfiˇÅÚˇ˘ÅÅfiˇÅÚˇ˘ÅÅfiˇÅÚˇ˘ÅÅfiˇÅÚˇ˘ÅÅfiˇÅÚˇ˘ÅÅfiˇÅÚˇ˘ÅÅfiˇ˜˛ˇ›˛§ˇ˘6ÅÅfiˇ¯ˇ˛ˇˇˇ¸ˇ˛ˇ˛ˇˇ˛ˇ˛ˇˇ˛ˇˇˇ§ˇ˘9ÅÅfiˇ¯ˇ˝ˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ˛ˇ§ˇ˘9ÅÅfiˇ¯ˇ˝ˇˇ˛ˇ˛ˇˇˇˇˇˇ˛˛ˇ˛ˇ˛ˇ§ˇ˘:ÅÅfiˇ¯ˇ˛ˇˇˇˇˇˇˇˇˇˇˇˇˇ˛ˇˇ˛ˇ§ˇ˘7ÅÅfiˇ˜˛ˇ ˇˇˇˇˇ˛ˇ˛ˇˇˇˇ˛ˇˇˇˇ˛ˇ§ˇ˘ÅÅfiˇË˛åˇ˘ÅÅfiˇËˇåˇ˘ÅÅfiˇÅÚˇ˘ÅÅfiˇÅÚˇ˘ÅÅfiˇÅÚˇ˘ÅÅfiˇÅÚˇ˘ÅÅfiˇÅÚˇ˘ÅÅfiˇÒÌˇñˇ˘V©ˇ˜ˇˇ˜ˇˇÏˇˇ÷˛ˇ›ˇ˛ˇˇ˛ˇˇ◊ˇˇÛ˛ˇÔˇˇ„˝ˇˇÚˇ˝ˇÒˇÒˇÛˇ˘Û™ ˛ˇˇ˛ˇ˛ˇˇ˛ˇˇˇˇˇ˛ˇˇˇˇ˛ˇ˝ ˛ˇ˛ˇ˛ˇ˛Ÿˇ˛ˇ˛ˇˇ˛˛ˇˇˇ˛ˇ˛ˇ˛ˇ˛ˇ˛ˇˇ˛ˇ˛ˇˇ˛ ˇˇ˛ˇ˛ˇˇˇˇ˛    ˇˇ˛ˇˇˇˇ˛ˇ˛ˇ˛ˇ˛ˇ˛ˇˇˇÛˇÛˇÏˇ„˛˛˛ˇˇ˛ˇˇˇˇˇˇ˛ˇˇ˛ˇ˛ˇˇ˛ˇ˝ˇˇ˛ˇˇ˛ˇ˛ˇ˛ˇ˛ˇ˛ˇ˛˙ˇ˘Ú™#ˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ˛ ˇˇˇˇˇˇˇÿˇ¸"ˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ˛ˇˇ˛ˇˇˇˇˇˇ˛ ˇˇˇˇˇˇˇ˛ˇ˛ˇˇˇˇˇˇˇÚˇÙˇˇÏˇˇ‰ˇ˛ˇˇˇ˛ˇˇˇˇˇˇˇˇˇˇˇˇ˝ˇˇˇˇˇˇˇˇˇˇˇˇˇ˘ˇ˘Ê´¸ˇ ˇˇˇˇˇˇ˛ˇˇˇˇˇˇˇˇˇ˛ˇ˛    ˇˇˇˇˇˇŸˇ¸ˇˇˇˇˇˇˇˇˇˇˇ˝ˇˇˇˇ˛ˇˇˇˇˇˇˇˇˇˇˇˇ¸ˇˇ˝ˇ˝ˇ ˇˇˇˇˇÛˇÙˇÍˇ‰ˇ˛
  7296. ˇˇˇˇ˛ˇˇˇˇ˛ˇˇ¸ˇ˝ˇ¸ˇˇ˛ˇˇˇˇ˝ˇˇ˙ˇ˘Ò´ˇ˛ ˇ˛ˇˇˇ˛ˇˇˇˇˇ˛ˇˇˇˇ˛ˇ˛ˇ˛ˇ˛ˇ⁄ˇ˛ˇˇ˛ˇˇˇ˛ˇ˛ˇˇˇˇ˝ˇ˛ˇ˛ˇˇˇˇ˛ˇ˛ˇˇˇˇˇ˝˛¸ˇ˛˝ˇˇˇ˛˛˛ÙˇÙˇÍˇ‰ˇ˛ˇ˛˛˛ˇˇˇˇ˛ˇ˛ˇˇˇ˛ˇ˝ˇˇˇ˝
  7297. ˛ˇ˛ˇ˛ˇˇ¸ˇ˚ˇ˘Î´ˇ˛˛ˇ˛ˇ    ˇˇˇˇ˛ˇ ˇˇˇˇˇˇ˝ˇˇ˛ˇˇˇˇÿ˛ˇ˛    ˇˇˇˇˇ˛ˇˇˇˇˇˇˇˇˇˇ˛ˇˇ˝ˇˇˇ˛ˇ˛ˇˇˇˇ˝ˇ˛ˇˇˇˇ˛ˇˇÛˇÙˇÍˇ‰˝ˇˇˇ˛ˇ˛ˇ    ˇˇˇˇˇ˛ˇˇˇ¸˛ˇˇˇ˛ˇˇˇˇ˛ˇˇˇˇ˙ˇ˘&ߡ˝ˇúˇ–ˇ÷ˇÙˇÍˇÿˇ¬ˇ˘'ߡ˝˛úˇ“ˇˇ’ˇÙ˝ˇÌˇÿ˛¬ˇ˘ÅÅfiˇÙˇˇˇÌˇˇôˇ˘9ܡ˝ˇÛˇˇ≈ˇÛˇ”ˇˇÏˇÒˇÌ˛ˇÃˇÛˇÓˇÛˇ˘ı´ˇˇˇˇ˛˛ˇ˛ˇ˛ˇ˛ ˇˇ˛ˇˇˇˇ˛ˇˇˇ˛ˇˇ˛ˇ˛ˇˇ˛ˇˇ˛ˇˇˇ˛ˇÊˇ˛ˇ˛ˇ˛ˇˇˇ˛ˇ˛ˇ˛˝ˇˇˇˇ˛ˇˇˇ¸ˇˇˇˇ˛ˇˇ˛ˇˇ˛ˇˇˇ˛ˇ˛ˇ˛ˇ˛ˇˇ˛˛ˇ˛ˇ˛ˇıˇÒˇÎˇÊˇˇˇˇ˛    ˇ˛ˇˇ˛ˇ˛˛˛ˇ˛˛˛ˇ˛ˇ˛˛ˇˇˇ¸˛ˇˇ˛ˇ˛˛ˇÛˇ˘˙¨&ˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ˝ˇˇˇˇˇˇˇˇˇˇˇˇˇÊˇˇˇˇˇˇˇˇˇˇ˝ˇ˛ˇˇˇˇˇˇˇˇ˛ˇˇˇˇˇˇˇˇˇ˛ˇˇˇˇˇˇˇˇˇˇˇˇˇıˇÒˇÎˇÊˇˇˇˇˇˇˇˇˇˇ˝ˇˇˇˇˇˇˇˇˇ¸˛ˇˇˇˇÛˇ˘Ú¨ˇ˛ˇˇˇˇˇˇˇˇˇˇˇ˝ˇˇˇˇ˝
  7298. ˇˇˇˇˇˇ˝    ˇˇˇˇˇˇÊˇ¸ˇˇˇˇ˝ˇˇ˛ˇ˛ˇ˛ˇˇˇˇ˝ˇ˛ˇ˛ˇˇˇˇ˝ˇ ˇˇˇˇˇˇˇˇˇˇˇˇˇˇıˇÒˇÎˇÊˇ˝ˇˇˇˇˇ˝ˇˇ˛ˇˇ˛ˇˇˇ¸ˇ˛ ˇˇˇˇˇˇˇÛˇ˘Ô¨ˇˇˇˇˇ˛ˇˇ˛ˇˇˇ˛ˇ˝ˇˇ˛˝ˇˇ˛ˇ˛ˇˇ˛ˇˇˇˇˇÊˇ˛˛    ˛ˇˇˇˇ¸ˇˇ˛
  7299. ˇˇˇˇˇˇˇ˚
  7300. ˇˇˇˇˇˇˇ˚ˇ˛ˇ˛ˇˇˇˇ˛ˇˇˇ˛ˇıˇÒˇÎˇÊ˛ˇ˝˛ˇ˛ˇ˛˚ˇˇˇ˛ˇ˛ˇˇˇ˚ ˇ˛ˇˇˇˇÛˇ˘Ó´
  7301. ˇˇˇˇˇˇˇ˛ˇ˛ˇˇˇˇˇˇˇˇˇ˝˝ˇˇˇ˛ˇˇˇˇˇˇˇˇˇÈˇ˛ˇˇ˛ˇ˛ˇˇˇˇ˛ˇ˝ˇˇˇˇ˛ˇˇˇ¸ˇˇˇˇˇˇˇˇ˛ˇ˛ˇ
  7302. ˇˇˇˇ˛ˇˇˇˇ˛˛ˇıˇÒˇÎˇÊˇ˛ˇˇ˛˚ˇˇˇ˛ˇ˛ˇ˛ˇˇˇˇ˛˛ˇˇˇ¸˝ˇˇ˛˛ˇÛˇ˘&ùˇ®ˇ≈ˇÁˇıˇÒˇÎˇ€ˇ¡ˇ˘'ùˇ®ˇ≈ˇÈˇ˛ÙˇÒˇÎˇ€ˇ¡ˇ˘ÅÅfiˇÒˇÌˇˇöˇ˘6ÅÃˇ˜ˇ¯ˇˆˇÿˇflˇÒˇÌ˛ˇ›ˇˇflˇ˚ˇÎˇ˘òÅÕˇˇ˛ˇ¸ˇ˛ˇˇ˛˛    ˛ˇˇˇ˛ˇ˛˛ˇ˛    ˇ˛ˇ˛ˇ˛˛ˇ˛ˇ˛ˇ˛ˇˇ˛˛    ˛ˇˇ˛ˇ˛ˇflˇÙ˝ˇÌˇ„ ˇˇˇˇˇˇˇ˚%˛ˇˇ˛ˇ˛ˇˇ˛ˇ˛ˇˇ˛ˇ˛ˇˇˇˇ˛ˇ˛ˇÔˇ˘ùé
  7303. ¿ˇˇˇ˛    ˇˇˇˇˇ˛2ˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ˛ˇflˇÙˇÍˇ‰ ˇˇˇˇˇˇˇ˘˛ˇˇˇˇˇˇˇˇˇˇˇ˛ˇˇˇˇˇˇ˘öé¿ˇˇˇ˛ˇ¸ˇˇˇˇ˝ˇˇˇˇ˛ˇˇˇˇˇˇˇˇˇˇˇ¸ˇˇ˛ˇflˇÙˇÍˇ‰ˇ˛    ˇˇˇˇˇˇ¸#ˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ˝ˇˇ˘õé
  7304. ¿˛ˇ˛˛˛ˇ˛˚ˇˇˇˇ˝#ˇˇ˛ˇ˛ˇˇˇˇˇˇ˛ˇ˛ˇˇ˛ˇˇ˛ˇflˇÙˇÍˇ‰ˇˇˇˇˇˇ˛˝$ˇ˛ˇ˛ˇˇˇˇ˛ˇ˛ˇ˛ˇˇˇˇÌˇ˘îé
  7305. ¿ˇˇˇ¸˛ˇˇˇ˛    ˇˇˇˇˇ˛˛ˇ˛
  7306. ˇˇˇˇˇˇˇ˛ˇ˛ˇˇˇˇ˛ˇˇˇˇ˛ˇflˇÙˇÍˇ„ˇˇ˛ˇˇˇˇ˚˚ˇ˛ˇˇ˛ˇˇ˛ˇˇˇ˛ˇˇˇˇÔˇ˘'é
  7307. 硫ˇÙˇˇÎˇÕˇ˝ˇ˜ˇ›ˇ˘'é硫ˇÛˇÏˇˇÕˇ˝˛˜ˇ›ˇ˘é
  7308. Å“ˇÛ͡óˇ˘:é¿ˇÛˇˇˇÎˇˇˇ˙ˇÛˇˇÈˇóˇ˛ˇÛˇˇÚˇ˘≤é
  7309. ¡ˇ˛ˇˇˇˇ˛ˇ˛ˇˇ˛ˇ˛ˇ˛ˇ˝ˇˇˇˇˇ˛ˇˇ˛ˇ˝˛ˇ˛ˇˇ˛˛ˇ˝˛ˇˇ˛ˇˇ˛˛
  7310. ˛ˇˇ˛ˇ˛ˇˇ˛ˇÒˇΩ    ˇ˛ˇ˛ˇ˛˛ˇ ˇˇ˛ˇ˛ˇˇ˛˛&˛ˇˇ˛ˇ˛ˇ˛ˇˇ˛ˇ˛ˇ˛ˇˇ˛ˇ˛ˇ˛ˇˇ˙ˇ˘≤é
  7311. ¿ˇˇˇˇˇˇˇˇˇˇˇˇˇ¸ˇˇˇˇˇˇˇˇˇ˝ ˇˇˇˇˇˇˇ¸ˇˇˇˇˇˇˇˇˇˇˇˇˇÒˇæ#ˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ˛ˇ˛ˇˇˇˇˇˇˇˇˇˇˇˇˇ˙ˇ˘Øé
  7312. ¿
  7313. ˇˇˇˇˇˇ˝
  7314. ˇˇˇˇˇˇ˛ˇˇˇˇˇˇˇˇˇˇ˝ ˇˇˇˇˇˇˇ¸
  7315. ˇˇˇˇˇˇ˝    ˇˇˇˇˇˇÒˇæˇ˛ˇˇˇˇˇˇˇˇˇˇˇ¸ˇˇ˛ˇ˛
  7316. ˇˇˇˇˇˇ˝
  7317. ˇˇˇˇˇˇ˙ˇ˘¥é¿ˇˇˇ˛ˇ˛ˇˇˇ˛ˇˇˇ˛ˇˇ˛ˇˇˇ˛ˇˇ˝ ˇ˛ˇˇˇˇˇ¸ˇ˛ˇ˛ˇˇ˛ˇˇˇ˛ˇˇÒˇæ˛ˇ˛ˇˇˇˇ˛ˇ˛ˇ˛ˇˇ˛ˇˇ˛ˇ˛ˇ˛ˇˇˇˇ˛ˇ˛ˇ˛ˇ˛˙ˇ˘©é
  7318. ¿˝ˇˇˇˇˇˇˇˇˇˇˇ˝˛ˇ ˇˇˇˇˇ˛ˇ¸
  7319. ˇˇˇˇˇˇ¸˝ˇˇˇ˛
  7320. ˇˇˇˇˇˇˇˇÒˇΩˇˇˇˇˇˇˇ˛ˇˇˇˇˇ˛ˇˇˇˇ˛ˇ˛˝ˇˇˇˇˇˇˇˇˇˇˇ˙ˇ˘éëˇ√ˇÆˇΔˇ˘é
  7321. ìˇˇ¬ˇÆˇΔˇ˘é
  7322. Å“ˇÅÚˇ˘òź@ĪHHQo< ±Ä˛ˇˇˇˇˇˇˇˇˇˇÃÃˇˇˇˇôôˇˇˇˇffˇˇˇˇ33ˇˇˇˇˇˇÃÃˇˇˇˇÃÃÃÃˇˇÃÃôô    ˇˇÃÃff
  7323. ˇˇÃÃ33 ˇˇÃà ˇˇôôˇˇ
  7324. ˇˇôôÃÃˇˇôôôôˇˇôôffˇˇôô33ˇˇôôˇˇffˇˇˇˇffÃÃˇˇffôôˇˇffffˇˇff33ˇˇffˇˇ33ˇˇˇˇ33ÃÃˇˇ33ôôˇˇ33ffˇˇ3333ˇˇ33ˇˇˇˇˇˇÃàˇˇôô!ˇˇff"ˇˇ33#ˇˇ$ÃÃˇˇˇˇ%ÃÃˇˇÃÃ&ÃÃˇˇôô'ÃÃˇˇff(ÃÃˇˇ33)ÃÃˇˇ*ÃÃÃÃˇˇ+ÃÃÃÃÃÃ,ÃÃÃÃôô-ÃÃÃÃff.ÃÃÃÃ33/ÃÃÃÃ0ÃÃôôˇˇ1ÃÃôôÃÃ2ÃÃôôôô3ÃÃôôff4ÃÃôô335ÃÃôô6ÃÃffˇˇ7ÃÃffÃÃ8ÃÃffôô9ÃÃffff:ÃÃff33;ÃÃff<ÃÃ33ˇˇ=ÃÃ33ÃÃ>ÃÃ33ôô?ÃÃ33ff@ÃÃ3333AÃÃ33BÃÃˇˇCÃÃÃÃDÃÃôôEÃÃffFÃÃ33GÃÃHôôˇˇˇˇIôôˇˇÃÃJôôˇˇôôKôôˇˇffLôôˇˇ33MôôˇˇNôôÃÃˇˇOôôÃÃÃÃPôôÃÃôôQôôÃÃffRôôÃÃ33SôôÃÃTôôôôˇˇUôôôôÃÃVôôôôôôWôôôôffXôôôô33YôôôôZôôffˇˇ[ôôffÃÃ\ôôffôô]ôôffff^ôôff33_ôôff`ôô33ˇˇaôô33ÃÃbôô33ôôcôô33ffdôô3333eôô33fôôˇˇgôôÃÃhôôôôiôôffjôô33kôôlffˇˇˇˇmffˇˇÃÃnffˇˇôôoffˇˇffpffˇˇ33qffˇˇrffÃÃˇˇsffÃÃÃÃtffÃÃôôuffÃÃffvffÃÃ33wffÃÃxffôôˇˇyffôôÃÃzffôôôô{ffôôff|ffôô33}ffôô~ffffˇˇffffÃÃÄffffôôÅffffffÇffff33ÉffffÑff33ˇˇÖff33ÃÃÜff33ôôáff33ffàff3333âff33äffˇˇãffÃÃåffôôçfffféff33èffê33ˇˇˇˇë33ˇˇÃÃí33ˇˇôôì33ˇˇffî33ˇˇ33ï33ˇˇñ33ÃÃˇˇó33ÃÃÃÃò33ÃÃôôô33ÃÃffö33ÃÃ33õ33ÃÃú33ôôˇˇù33ôôÃÃû33ôôôôü33ôôff†33ôô33°33ôô¢33ffˇˇ£33ffÃç33ffôô•33ffff¶33ff33ß33ff®3333ˇˇ©3333ÃÙ3333ôô´3333ff¨333333≠3333Æ33ˇˇØ33ÃÃ∞33ôô±33ff≤3333≥33¥ˇˇˇˇµˇˇÃÃ∂ˇˇôô∑ˇˇff∏ˇˇ33πˇˇ∫ÃÃˇˇªÃÃÃúÃÃôôΩÃÃffæÃÃ33øÃÿôôˇˇ¡ôôÃìôôôô√ôôffƒôô33≈ôôΔffˇˇ«ffÃûffôô…ffff ff33ÀffÃ33ˇˇÕ33ÃÃŒ33ôôœ33ff–3333—33“ˇˇ”ÃÑôô’ff÷33◊ÿˇˇˇŸ˘`˘`˘`⁄Ú–Ú–Ú–€Ï@Ï@Ï@‹Â∞Â∞Â∞›fl fl fl fiÿêÿêÿêfl“““‡ÀpÀpÀp·ƒ‡ƒ‡ƒ‡‚æPæPæP„∑¿∑¿∑¿‰±0±0±0™†™†™†Ê§§§ÁùÄùÄùÄËñññÈê`ê`ê`Íâ–â–â–ÎÉ@É@É@Ï|∞|∞|∞Ìv v v ÓoêoêoêÔiiibpbpbpÒ[‡[‡[‡ÚUPUPUPÛN¿N¿N¿ÙH0H0H0ıA†A†A†ˆ;;;˜4Ä4Ä4į---˘'`'`'`˙ – – –˚@@@¸∞∞∞˝
  7325.  
  7326.  
  7327.  ˛êêê@Īvq∂,'é
  7328. •ˇØˇ∏ˇˇˇflˇ„ˇ˘m類ˇ ˇˇˇˇˇˇ˛ˇ˛ˇ˛
  7329. ˇˇ˛ˇˇ˛ˇ˛ˇ∏ˇΩˇˇˇˇ˛˛ˇ˛˝˛ˇ ˇˇˇˇˇˇ˛ˇ˛ˇ˛
  7330. ˇˇ˛ˇˇ˛ˇ˛ˇÏˇ˘ké
  7331. ¡    ˇˇˇˇˇ˝˛ˇˇˇˇˇˇˇˇˇˇ∑ˇΩ ˇˇˇˇˇˇˇ˝    ˇˇˇˇˇ˛ˇˇˇˇˇˇˇˇˇˇˇˇÎˇ˘i顎˛ˇˇˇˇˇˇˇˇˇ˝ˇ¸ˇˇˇ∏ˇΩ ˇˇˇˇˇˇˇ˝ˇ˛ˇˇˇˇˇˇˇˇˇ˝ˇ¸ˇˇˇÏˇ˘mé
  7332. ¡ˇˇˇˇ˛ˇˇˇˇˇˇ˝ˇ˛˝ˇ˛ˇπˇΩ ˇˇˇ˛ˇ˛ˇ˝ˇˇˇˇ˛ˇˇˇˇˇˇ˝ˇ˛˝ˇ˛ˇÌˇ˘pé
  7333. ¡˛ˇ˛ˇˇ˛˝ˇˇˇ˛ˇˇˇˇˇˇˇˇªˇº
  7334. ˇˇˇˇˇˇ˝˛ˇ˛ˇˇ˛ˇˇˇˇ˛ˇˇˇˇˇˇˇˇÔˇ˘é
  7335. ¡ˇ¡‘ˇ≠ˇ«ˇ˘é¡ˇ¡
  7336. ‘ˇ≠ˇ«ˇ˘é
  7337. Å
  7338. ‘ˇé
  7339. Êˇ˘éÅ
  7340. ‘ˇéÊˇ˘é
  7341. Å‘ˇé
  7342. Êˇ˘é
  7343. Å
  7344. ‘ˇé
  7345. Êˇ˘é
  7346. Å‘ˇé
  7347. Êˇ˘éÅ
  7348. ‘ˇéÊˇ˘é
  7349. Å
  7350. ‘ˇé
  7351. Êˇ˘éÅ
  7352. ‘ˇéÊˇ˘é
  7353. Å‘ˇé
  7354. Êˇ˘é
  7355. Å
  7356. ‘ˇé
  7357. Êˇ˘é
  7358. Å‘ˇé
  7359. Êˇ˘éÅ
  7360. ‘ˇ‡∏ˇ¯Êˇ˘k∏ˇŸ
  7361. „∏ˇÁ
  7362. ‘ˇ‡Hˇˇ¯
  7363. Êˇ˘˙JˇˇŸ„HˇˇÁ
  7364. ‘ˇ‡Hˇˇ¯Êˇ˘˝Iˇ˛ˇ€
  7365. „Gˇ˛ˇÈ‘ˇ‡Gˇ˛ˇ˙
  7366. Êˇ˘˝Iˇ˛ˇ€
  7367. „Gˇ˛ˇÈ
  7368. ‘ˇ‡Gˇ˛ˇ˙
  7369. Êˇ˘˝Iˇ˛ˇ€
  7370. „Gˇ˛ˇÈ‘ˇ‡Gˇ˛ˇ˙
  7371. Êˇ˘˝Iˇ˛ˇ€„Gˇ˛ˇÈ
  7372. ‘ˇ‡Gˇ˛ˇ˙Êˇ˘˝Iˇ˛ˇ€
  7373. „Gˇ˛ˇÈ
  7374. ‘ˇ‡Gˇ˛ˇ˙
  7375. Êˇ˘˝Iˇ˛ˇ€„Gˇ˛ˇÈ
  7376. ‘ˇ‡Gˇ˛ˇ˙Êˇ˘˝Iˇ˛ˇ€
  7377. „Gˇ˛ˇÈ‘ˇ‡Gˇ˛ˇ˙
  7378. Êˇ˘˝Iˇ˛ˇ€
  7379. „Gˇ˛ˇÈ
  7380. ‘ˇ‡Gˇ˛ˇ˙
  7381. Êˇ˘˝Iˇ˛ˇ€
  7382. „Gˇ˛ˇÈ‘ˇ‡Gˇ˛ˇ˙
  7383. Êˇ˘˝Iˇ˛ˇ€„Gˇ˛ˇÈ
  7384. ‘ˇ‡Gˇ˛ˇ˙Êˇ˘˝Iˇ˛ˇ€
  7385. „Gˇ˛ˇÈ
  7386. ‘ˇ‡Gˇ˛ˇ˙
  7387. Êˇ˘˝Iˇ˛ˇ€„Gˇ˛ˇÈ
  7388. ‘ˇ‡Gˇ˛ˇ˙Êˇ˘˝Iˇ˛ˇˇ˛ˇ˛ˇ€
  7389. „Gˇˇ˛ˇˇ˛ˇÈ‘ˇ‡Gˇˇˇ˛ˇ˛ˇ˙
  7390. Êˇ˘˘ˇˇˇ˛ˇ˛ˇˇˇˇˇˇˇˇˇˇˇˇ˛ˇ˛ˇ€
  7391. „ˇˇˇˇˇ¸ˇ˛ˇˇˇ˛ˇˇˇ˛ˇˇˇ˛ˇÈ
  7392. ‘ˇ‡ˇˇˇˇˇ¸ˇ˛ˇˇˇ˛ˇˇˇ˛ˇˇˇ˛ˇ˙
  7393. Êˇ˘˝Iˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ˛ˇ€
  7394. „Gˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ˛ˇÈ‘ˇ‡Gˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ˛ˇ˙
  7395. Êˇ˘˝ˇ˛˛ˇ2˛ˇ˛ˇ˛ˇˇˇˇˇ˛ˇ˛ˇ˛ˇ˛˛ˇ€„Gˇ˛ˇ˛ˇ˛ˇ˛ˇˇ˛ˇˇˇˇ˛ˇˇ˛˛˛ˇÈ
  7396. ‘ˇ‡.ˇˇˇ˛ˇˇˇ˛ˇ˛ˇˇˇ˛ˇ˛ˇ˛ˇ˛ˇ˙Êˇ˘˝Iˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ˛ˇ€
  7397. „Gˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ˛ˇÈ
  7398. ‘ˇ‡Gˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ˛ˇ˙
  7399. Êˇ˘¸ˇˇ˝ˇ˛ˇ    ˇˇˇˇ˛ˇˇˇˇˇˇˇ˛ˇ€„ˇ˛ˇ ˇˇˇˇˇ˛ˇ#ˇˇˇˇˇˇˇˇˇ˛ˇÈ
  7400. ‘ˇ‡ˇ˛ˇ ˇˇˇˇˇ˛ˇ"ˇˇˇˇˇˇˇˇˇ˛ˇ˙Êˇ˘˝Iˇˇˇ˛ˇ€
  7401. „Gˇˇ˛ˇÈ‘ˇ‡Gˇˇ˛ˇ˙
  7402. Êˇ˘˝Iˇˇˇ˛ˇ€
  7403. „Gˇˇ˛ˇÈ
  7404. ‘ˇ‡Gˇˇ˛ˇ˙
  7405. Êˇ˘˝Iˇ˛ˇ€
  7406. „Gˇ˛ˇÈ‘ˇ‡Gˇ˛ˇ˙
  7407. Êˇ˘˝Iˇ˛ˇ€„Gˇ˛ˇˇˇ˛ˇÈ
  7408. ‘ˇ‡Gˇ˛ˇˇˇ˛ˇ˙Êˇ˘˝Iˇ˛ˇ€
  7409. „ ˇˇˇˇˇˇˇ˛ˇˇˇ˛ˇˇˇˇˇ˛ˇÈ
  7410. ‘ˇ‡ˇ˛ˇˇˇ˛ˇ ˇˇˇˇˇˇ˛ˇˇˇˇˇ˛ˇ˙
  7411. Êˇ˘˝Iˇ˛ˇ€„&ˇˇˇˇˇˇˇˇˇ˛ˇˇˇˇˇ˛ˇÈ
  7412. ‘ˇ‡Gˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ˛ˇ˙Êˇ˘˝Iˇ˛ˇ€
  7413. „/ˇˇ˛ˇ˛ˇˇ˛ˇ˛ˇˇˇˇˇˇ˛˛ˇ˛ˇÈ‘ˇ‡ ˇˇˇ˛ˇˇ˛ˇ ˇˇˇˇˇ˛ˇ˛ˇ˛ˇ˙
  7414. Êˇ˘˝Iˇ˛ˇ€
  7415. „Gˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ˛ˇÈ
  7416. ‘ˇ‡Gˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ˛ˇ˙
  7417. Êˇ˘˝Iˇ˛ˇ€
  7418. „ˇˇˇˇ˛ˇˇˇ˛ˇ˛ˇˇˇˇ˛ˇÈ‘ˇ‡ˇ˛ˇˇˇ˛ˇ˛ˇ!ˇˇˇˇˇˇˇˇ˛ˇ˙
  7419. Êˇ˘˝Iˇ˛ˇ€„Gˇˇ˛ˇÈ
  7420. ‘ˇ‡Gˇ˛˛ˇ˙Êˇ˘ıIˇ˛ˇºGˇˇˇ˛ˇªˇ‡Gˇˇ˛ˇ˙
  7421. Êˇ˘˝Iˇ˛ˇ«ˇ˜Gˇ˛ˇªˇÍˇ¯Gˇ˛ˇ˙Êˇ˘˝Iˇ˛ˇ«˝ˇ˙Gˇ˛ˇªˇÍ˛ˇ˙Gˇ˛ˇ˙
  7422. Êˇ˘˝Iˇ˛ˇΔ¸ˇ¸Gˇ˛ˇªˇÈ¸ˇ˝Gˇ˛ˇ˙
  7423. Êˇ˘˘Iˇ˛ˇ˛√ˇ˝Gˇ˛ˇ˝†ˇ˛Gˇ˛ˇ˙
  7424. Êˇ˘˝Iˇ˛ˇΔ¸ˇ¸Gˇ˛ˇªˇÈ¸ˇ˝Gˇ˛ˇ˙Êˇ˘˝Iˇ˛ˇ«˝ˇ˙Gˇ˛ˇªˇÍ˛ˇ˙Gˇ˛ˇ˙
  7425. Êˇ˘˝#ˇ˛ˇ"˛ˇ«ˇ˜Gˇ˛ˇªˇÍˇ¯Gˇ˛ˇ˙Êˇ˘ıIˇˇˇˇˇ˛ˇºGˇ˛ˇªˇ‡Gˇ˛ˇ˙
  7426. Êˇ˘˝ ˇ˛ˇ˛"ˇˇ˛ˇ¯ˇˇ«Gˇ˛ˇ¯ˇ≈ˇ‡Gˇ˛ˇ˙
  7427. Êˇ˘Ï!ˇˇˇ˚!ˇˇ˛ˇ˙˛ˇΔˇ˙ˇ¯ˇ˛ˇ˚˝ˇ≈ˇ‡Gˇ˛ˇfiˇ˘Ô ˇˇˇ˘ ˇˇ˛ˇ¸¸ˇΔˇ˛ˇ˝ ˇˇˇ˚ˇ˛ˇ˝¸ˇƒˇ‡Gˇ˛ˇfiˇ˘‹ˇˇˇ˜ˇˇ˛ˇ˝ƒˇ˝ˇˇ˚Ùˇ˚ˇˇ˛ˇ˛†ˇ˝Gˇ˛ˇfiˇ˘›ˇˇˇıˇˇ˛ˇ¸¸ˇΔˇˇÁˇ˛ˇ˝¸ˇƒˇ‡Gˇ˛ˇ˛ıˇÌˇ˘òÅºÄÆªHHQoD ≤IJˇˇˇˇˇˇˇˇˇˇÃÃˇˇˇˇôôˇˇˇˇffˇˇˇˇ33ˇˇˇˇˇˇÃÃˇˇˇˇÃÃÃÃˇˇÃÃôô    ˇˇÃÃff
  7428. ˇˇÃÃ33 ˇˇÃà ˇˇôôˇˇ
  7429. ˇˇôôÃÃˇˇôôôôˇˇôôffˇˇôô33ˇˇôôˇˇffˇˇˇˇffÃÃˇˇffôôˇˇffffˇˇff33ˇˇffˇˇ33ˇˇˇˇ33ÃÃˇˇ33ôôˇˇ33ffˇˇ3333ˇˇ33ˇˇˇˇˇˇÃàˇˇôô!ˇˇff"ˇˇ33#ˇˇ$ÃÃˇˇˇˇ%ÃÃˇˇÃÃ&ÃÃˇˇôô'ÃÃˇˇff(ÃÃˇˇ33)ÃÃˇˇ*ÃÃÃÃˇˇ+ÃÃÃÃÃÃ,ÃÃÃÃôô-ÃÃÃÃff.ÃÃÃÃ33/ÃÃÃÃ0ÃÃôôˇˇ1ÃÃôôÃÃ2ÃÃôôôô3ÃÃôôff4ÃÃôô335ÃÃôô6ÃÃffˇˇ7ÃÃffÃÃ8ÃÃffôô9ÃÃffff:ÃÃff33;ÃÃff<ÃÃ33ˇˇ=ÃÃ33ÃÃ>ÃÃ33ôô?ÃÃ33ff@ÃÃ3333AÃÃ33BÃÃˇˇCÃÃÃÃDÃÃôôEÃÃffFÃÃ33GÃÃHôôˇˇˇˇIôôˇˇÃÃJôôˇˇôôKôôˇˇffLôôˇˇ33MôôˇˇNôôÃÃˇˇOôôÃÃÃÃPôôÃÃôôQôôÃÃffRôôÃÃ33SôôÃÃTôôôôˇˇUôôôôÃÃVôôôôôôWôôôôffXôôôô33YôôôôZôôffˇˇ[ôôffÃÃ\ôôffôô]ôôffff^ôôff33_ôôff`ôô33ˇˇaôô33ÃÃbôô33ôôcôô33ffdôô3333eôô33fôôˇˇgôôÃÃhôôôôiôôffjôô33kôôlffˇˇˇˇmffˇˇÃÃnffˇˇôôoffˇˇffpffˇˇ33qffˇˇrffÃÃˇˇsffÃÃÃÃtffÃÃôôuffÃÃffvffÃÃ33wffÃÃxffôôˇˇyffôôÃÃzffôôôô{ffôôff|ffôô33}ffôô~ffffˇˇffffÃÃÄffffôôÅffffffÇffff33ÉffffÑff33ˇˇÖff33ÃÃÜff33ôôáff33ffàff3333âff33äffˇˇãffÃÃåffôôçfffféff33èffê33ˇˇˇˇë33ˇˇÃÃí33ˇˇôôì33ˇˇffî33ˇˇ33ï33ˇˇñ33ÃÃˇˇó33ÃÃÃÃò33ÃÃôôô33ÃÃffö33ÃÃ33õ33ÃÃú33ôôˇˇù33ôôÃÃû33ôôôôü33ôôff†33ôô33°33ôô¢33ffˇˇ£33ffÃç33ffôô•33ffff¶33ff33ß33ff®3333ˇˇ©3333ÃÙ3333ôô´3333ff¨333333≠3333Æ33ˇˇØ33ÃÃ∞33ôô±33ff≤3333≥33¥ˇˇˇˇµˇˇÃÃ∂ˇˇôô∑ˇˇff∏ˇˇ33πˇˇ∫ÃÃˇˇªÃÃÃúÃÃôôΩÃÃffæÃÃ33øÃÿôôˇˇ¡ôôÃìôôôô√ôôffƒôô33≈ôôΔffˇˇ«ffÃûffôô…ffff ff33ÀffÃ33ˇˇÕ33ÃÃŒ33ôôœ33ff–3333—33“ˇˇ”ÃÑôô’ff÷33◊ÿˇˇˇŸ˘`˘`˘`⁄Ú–Ú–Ú–€Ï@Ï@Ï@‹Â∞Â∞Â∞›fl fl fl fiÿêÿêÿêfl“““‡ÀpÀpÀp·ƒ‡ƒ‡ƒ‡‚æPæPæP„∑¿∑¿∑¿‰±0±0±0™†™†™†Ê§§§ÁùÄùÄùÄËñññÈê`ê`ê`Íâ–â–â–ÎÉ@É@É@Ï|∞|∞|∞Ìv v v ÓoêoêoêÔiiibpbpbpÒ[‡[‡[‡ÚUPUPUPÛN¿N¿N¿ÙH0H0H0ıA†A†A†ˆ;;;˜4Ä4Ä4į---˘'`'`'`˙ – – –˚@@@¸∞∞∞˝
  7430.  
  7431.  
  7432.  ˛êêêÄÆª∂q‰,'‡ˇˇˇÛˇˇ˛ˇ˙˛ˇΔˇˇ¯˚ˇˆˇ˛ˇ˚˝ˇ≈ˇ‡Gˇ˛ˇÛˇˇÓˇ˘flˇˇˇÒˇˇ˛ˇ¯ˇˇ«ˇˇ˘¯ˇ¯ˇ˛ˇ¯ˇ≈ˇ‡Gˇ˛ˇÚˇˇÔˇ˘◊ˇˇˇÔˇˇ˛ˇºˇˇ˚˜ˇˇ˙ˇ˛ˇªˇ‡Gˇ˛ˇÒˇÔˇ˘◊ˇˇˇÌˇˇ˛ˇºˇˇ¸˜ˇ˛ˇˇ˚ˇ˛ˇªˇ‡Gˇ˛ˇÒˇˇˇ˘›ˇˇˇÎˇˇ˛ˇfl
  7433. flˇˇ¸˝ˇ˜ˇ˚ˇ˛ˇŒ
  7434. Òˇ‡Gˇ˛ˇˇˇ˘‡ˇˇˇÈˇˇ˛ˇfl1‡ˇˇ˝˝ˇ˚ˇˇ˛ˇ¸ˇ˛ˇœ1Ôˇ‡Gˇ˛ˇˇˇ˘›ˇˇˇÒ˝ˇ˚ˇˇ˛ˇfi·ˇˇ˝˝ˇ¸˘ˇ¸ˇ˛ˇ–
  7435.  
  7436. Óˇ‡Gˇ˛ˇˇˇ˘·ˇˇˇÚ˛ˇ˛ˇ¸ˇˇ˛ˇ›
  7437. ‚ˇˇ˝˛ˇ¸˜ˇ˝ˇ˛ˇ“
  7438. Ìˇ‡Gˇ˛ˇˇˇ˘„ˇˇˇÛˇˇ˚ˇˇ¸ˇ˛ˇ‹1‚ˇˇ˝˛ˇ¸¸ˇ˝ˇ˝ˇ˛ˇ”
  7439. Ρ‡Gˇ˛ˇˇˇ˘Êˇˇˇıˇˇ˘ˇˇ˛ˇˇ˛ˇ‹„ˇˇ˝˛ˇ˛˚ˇ˛˛ˇ˝ˇ˛ˇ‘͡‡Gˇ˛ˇˇˇ˘Âˇˇˇˆ˚ˇ¸ˇˇˇˇ˛ˇ€
  7440. ‰ˇˇ˝˛ˇ˝˝ˇ˛˝ˇ˝ˇ˛ˇ’
  7441. Èˇ‡Gˇ˛ˇˇˇ˘‡ˇˇˇ˙Ùˇ¸ˇ˛ˇ⁄1
  7442. ¡ˇ˝˝ˇ˜˝ˇ˝ˇ˛ˇ◊1
  7443. ˡ‡Gˇ˛ˇˇˇ˘‚ˇˇˇ˚˝ˇ˘ˇ˛˝ˇ˛ˇŸÂˇˇ˝˝ˇ¯˝ˇ¸ˇ˛ˇÿ
  7444.  
  7445. Êˇ‡Gˇ˛ˇˇˇ˘‡ˇˇˇ˘˚ˇ˙˝ˇ˛ˇŸ
  7446. Êˇˇ¸˝ˇ˘¸ˇ˝ˇ˛ˇŸ
  7447. ¡‡Gˇ˛ˇˇˇ˘‚ˇˇˇ˘ˇˇ˜˝ˇ˛ˇÿ1
  7448. Áˇˇ¸˚ˇ˝˘ˇ˛ˇ˛ˇ⁄‰ˇ‡Gˇ˛ˇˇˇ˘flˇˇˇ˘˝ˇ˙˝ˇ˛ˇ◊
  7449. ˡˇ˚ˇ˛ˇ˛ˇ‹
  7450. „ˇ‡Gˇ˛ˇˇˇ˘flˇˇˇ˜˙ˇ˝ˇ˛ˇ÷
  7451. Èˇˇ˙Òˇ˛ˇ˛ˇ›
  7452. ·ˇ‡Gˇ˛ˇˇˇ˘‰ˇˇˇˆˇˇ˚ˇ˛ˇ’
  7453. Èˇˇ¯˙ˇ¸ˇ˝ˇ˛ˇfi1
  7454. ‡ˇ‡Gˇ˛ˇˇˇ˘„ ˇˇˇ¯ˇˇ¸ˇ˛ˇ’
  7455. ͡ˇˇÈˇˇ˛ˇ‡
  7456.  
  7457. flˇ‡Gˇ˛ˇˇˇ˘Á!ˇˇˇ˙ˇˇ˝ˇ˛ˇ‘
  7458. Ρ¯ˇ˙˜ˇ˛ˇ·
  7459. ›ˇ‡Gˇ˛ˇˇˇ˘˘"ˇˇˇ¸!ˇˇ˛ˇ”
  7460. Ï ˇˇˇ˙ˇˇ˛ˇ‚‹ˇ‡Gˇ˛ˇˇˇ˘ı#ˇˇˇ˛"ˇˇ˛ˇ“
  7461. Ïˇıˇ˛ˇ„
  7462. €ˇ‡Gˇ˛ˇˇˇ˘Iˇˇˇˇˇ˛ˇ“
  7463. ÌGˇ˛ˇÂ
  7464. 
  7465. ⁄ˇ‡Gˇ˛ˇˇˇ˘ˇ#ˇ˛ˇ"˛ˇ—
  7466. ÓGˇ˛ˇÊ1
  7467. ÿˇ‡Gˇ˛ˇˇˇ˘ˇIˇ˛ˇ–
  7468.  
  7469. ÔGˇ˛ˇÁ
  7470. ◊ˇ‡Gˇ˛ˇˇˇ˘ˇIˇ˛ˇœ
  7471. Gˇ˛ˇË
  7472. ÷ˇ‡Gˇ˛ˇˇˇ˘ˇIˇ˛ˇŒGˇ˛ˇÍ1’ˇ‡Gˇ˛ˇˇˇ˘ˇIˇ˛ˇŒ
  7473.  
  7474. ÒGˇ˛ˇÎ
  7475. ”ˇ‡Gˇ˛ˇˇˇ˘ˇIˇ˛ˇÕ
  7476. ÚGˇ˛ˇÏ
  7477. “ˇ‡Gˇ˛ˇˇˇ˘Iˇ˛ˇÃÛGˇ˛ˇÓ1
  7478. —ˇ‡Gˇ˛ˇˇˇ˘˛Iˇ˛ˇÀ
  7479. ÛGˇ˛ˇÔ
  7480. œˇ‡Gˇ˛ˇˇˇ˘ˇIˇ˛ˇÀ
  7481. ÙGˇ˛ˇ
  7482. Œˇ‡Gˇ˛ˇˇˇ˘ˇIˇ˛ˇ ıGˇ˛ˇÒ1Õˇ‡Gˇ˛ˇˇˇ˘&∂ˇ…
  7483. ˆ∂ˇÛ
  7484.  
  7485. Ãˇ‡∂ˇˇˇ˘$˝∏ˇ»
  7486. ı∏ˇÙ
  7487.  ˇfi∏ˇˇˇ˘#˝∏ˇ«ı∏ˇı
  7488. …ˇfi∏ˇˇˇ˘Å˙
  7489. ¢»ˇÑˇˇ˘ Å˘
  7490. •
  7491. «ˇªˇˇÃˇˇ˘ů1ß1≈ˇªˇˇÃˇˇ˘Ř®
  7492.  
  7493. ƒˇº˛ˇÃˇˇ˘Ř
  7494. ´
  7495. √ˇº˝ˇÕˇˇ˘ň1≠
  7496. ¡ˇº˝ˇÕˇˇ˘ÅıØ¿ˇΩ˚ˇŒˇˇ˘"ÅÙ
  7497. ±
  7498. øˇΩ˛ˇˇˇŒˇˇ˘ÅÛ1≥1
  7499. æˇªˇÀˇˇ˘ÅÛµ
  7500.  
  7501. ºˇªˇÀˇˇ˘ò8@ª@ª‰q$,Ģ˘˘ ˚@Ô¿˘0˘˘ ˚@Ô@˘‡˘˘ ˚@Ô`˙Ģ˙?†˚@Ô0˙¯˚‡ ˚@Ô˙¯¸¯ ˚@Ô ˙¯¸ ˚@Ô˙0¯˝¿ ˚@Ô˙`¯˛¯˛ ˚@Ô˚¿¯˛~˝ ˚@Ôĸ˜¿˝ ˚@Óĸ˜¸ ˚@Ó¿¸ ˜˛˚ ˚@Ó`¸8˜Ä˚ ˚@Ó0¸`˜˙ ˚@Ó¸¿¯¸˘ ˚@Ó˝į?˘ ˚@Ó ˝¯‡˘ ˚@Ó˝ ˘¯Úˇ‡Ó˝˘˙ ˚@ Ó˝p˙¿˙ ˚@ ÓIJ¿˚¯˛˙ ˚@ Ì¿Ä˚~˝˙ ˚@ Ì`˚¿˝˙ ˚@ Ì0¸¸˙ ˚@ Ì¸˛˚IJ ˚@  Ì0˝Ä˚    MÛôÃÏ ˚@  Ì `˛˙    ReR§ ˚@ Ì¿¸˘    Re^§ ˚@ Ì˛?¯    SReP§ ˚@ Ì‡¯    çSôL§ ˚@ Ì¯˜˝ ˚@ Èˆ˝ ˚@ Í¿ˆ˙ ˚@ Î¯ı˝ ˚@ ÎÙ    Nng  ˚@ ›    Jñï@ ˚@ ›    JÜï  ˚@ ›    Jñï ˚@ ›     fe  ˚@ ›˙ ˚@ ›˙ ˚@ ›˙ ˚@ ›˙ ˚@ ›˙ ˚@ ›˙ ˚@ Ï˛  ˛˙ ˚@ !Ï Æ77
  7502. âV(6uπ鲢ˇ˛@ !Ï ™KM
  7503. QR0)5*R˛˘ˇ˛@  Ï ™CM …R(/5+“˛¯ˇÄ@  Ï ™KM
  7504. R$(5*˛¯ˇÄ@  Ï Í35    â“(&=)鞝ˇÄ@ ›¯ˇÄ@ ›¯ˇÄ@ ›¯ˇÄ@ Ï    ÄÑĸ¯ˇÄ@ Ï    ìô∑Δ·∞¸¯ˇÄ¿ Ï     â¢LÕ&I†»¸¯ˇÄÄ Ï     âít≈>O†»¸¯ˇſĠÏ     âädÕ"H†»¸¯ˇáÉÄ Ï     ìúµCF†∞¸¯ˇü˛ Í˛@˘¯ˇèÄ Íı¯ˇÉ¿ ›¯ˇÄ¿ ò8@Ī@Ī$qd,Ï˝å˘¯ˇÄ Ï    7Œg3±è9éÿ¸¯ˇÄ Ï    MIïJëç®”0¸¯ˇÄ Ï    MIïzëV´S¸¯ˇÄ Ï    MIïBëT™S¸¯ˇÄ Ï    5Ne2ë'©Œ“¸¯ˇÄ ͸¸¯ˇÄ ͸ ˚¯ˇÄ ›¯ˇÄ Î@ @
  7505. ¸¯ˇÄ Ï
  7506.  
  7507. «7çQl›L⁄Œ˝¯ˇÄ Ï
  7508. IáJ2
  7509. 3Rk*˝˛¯ˇÄ Ï
  7510. IõJ253Q´*˝˛¯ˇÄ Ï
  7511. IìJ2%3S+*˝Ú Ï GèD,›L͠IJÚ Ë˙Ú Ë ˙Ú  ›Ú  ›Ú ›˘ˇ˛˛ ›˘ˇ˛˛ ›¯ˇÄ ›¯ˇÄ ›¯ˇÄ ›¯ˇÄ ›¯ˇÄ ›¯ˇÄ ›¯ˇÄ ›¯ˇÄ ›¯ˇÄ ›¯ˇÄ ›¯ˇÄ ›¯ˇÄ ›¯ˇÄ ›¯ˇÄ ›¯ˇÄ ›¯ˇÄ ›¯ˇÄ ›¯ˇÄ ›¯ˇÄ ›¯ˇÄ ›¯ˇÄ ›¯ˇÄ ›¯ˇÄ ›¯ˇÄ ›¯ˇÄ ›¯ˇÄ ›˛¯ˇÄ ›˛¯ˇÄ  ›Ú  ›Ú  ›Ú ›˙ ˙  ›Ú  ›Ú  ›Ú  ›Ú  ›Ú ›˙ ˙  ›Ú  ›Ú  ›Ú  ›Ú  ›Ú ò8ÄÆªÄƪdqí,›˙ ˙  ›Ú  ›Ú  ›Ú ›˘ˇ˛˛ ›˘ˇ˛˛ ›¯ˇÄ ›¯ˇÄ ›¯ˇÄ ›¯ˇÄ ›¯ˇÄ ›¯ˇÄ ›¯ˇÄ ›¯ˇÄ ›¯ˇÄ ›¯ˇÄ ›¯ˇÄ ›¯ˇÄ ›¯ˇÄ ›¯ˇÄ ›¯ˇÄ ›¯ˇÄ ›¯ˇÄ ›¯ˇÄ ›¯ˇÄ ›¯ˇÄ ›¯ˇÄ ›¯ˇÄ ›¯ˇÄ ›¯ˇÄ ›¯ˇÄ ›¯ˇÄ ›˛¯ˇÄ ›˛¯ˇÄ  ›Ú  ›Ú  ›Ú  ›Ú  ›Ú  ›Ú  ›Ú  ›Úˇ‡    ›    ›    ›    ›òź@ªHHQo< ≥IJˇˇˇˇˇˇˇˇˇˇÃÃˇˇˇˇôôˇˇˇˇffˇˇˇˇ33ˇˇˇˇˇˇÃÃˇˇˇˇÃÃÃÃˇˇÃÃôô    ˇˇÃÃff
  7512. ˇˇÃÃ33 ˇˇÃà ˇˇôôˇˇ
  7513. ˇˇôôÃÃˇˇôôôôˇˇôôffˇˇôô33ˇˇôôˇˇffˇˇˇˇffÃÃˇˇffôôˇˇffffˇˇff33ˇˇffˇˇ33ˇˇˇˇ33ÃÃˇˇ33ôôˇˇ33ffˇˇ3333ˇˇ33ˇˇˇˇˇˇÃàˇˇôô!ˇˇff"ˇˇ33#ˇˇ$ÃÃˇˇˇˇ%ÃÃˇˇÃÃ&ÃÃˇˇôô'ÃÃˇˇff(ÃÃˇˇ33)ÃÃˇˇ*ÃÃÃÃˇˇ+ÃÃÃÃÃÃ,ÃÃÃÃôô-ÃÃÃÃff.ÃÃÃÃ33/ÃÃÃÃ0ÃÃôôˇˇ1ÃÃôôÃÃ2ÃÃôôôô3ÃÃôôff4ÃÃôô335ÃÃôô6ÃÃffˇˇ7ÃÃffÃÃ8ÃÃffôô9ÃÃffff:ÃÃff33;ÃÃff<ÃÃ33ˇˇ=ÃÃ33ÃÃ>ÃÃ33ôô?ÃÃ33ff@ÃÃ3333AÃÃ33BÃÃˇˇCÃÃÃÃDÃÃôôEÃÃffFÃÃ33GÃÃHôôˇˇˇˇIôôˇˇÃÃJôôˇˇôôKôôˇˇffLôôˇˇ33MôôˇˇNôôÃÃˇˇOôôÃÃÃÃPôôÃÃôôQôôÃÃffRôôÃÃ33SôôÃÃTôôôôˇˇUôôôôÃÃVôôôôôôWôôôôffXôôôô33YôôôôZôôffˇˇ[ôôffÃÃ\ôôffôô]ôôffff^ôôff33_ôôff`ôô33ˇˇaôô33ÃÃbôô33ôôcôô33ffdôô3333eôô33fôôˇˇgôôÃÃhôôôôiôôffjôô33kôôlffˇˇˇˇmffˇˇÃÃnffˇˇôôoffˇˇffpffˇˇ33qffˇˇrffÃÃˇˇsffÃÃÃÃtffÃÃôôuffÃÃffvffÃÃ33wffÃÃxffôôˇˇyffôôÃÃzffôôôô{ffôôff|ffôô33}ffôô~ffffˇˇffffÃÃÄffffôôÅffffffÇffff33ÉffffÑff33ˇˇÖff33ÃÃÜff33ôôáff33ffàff3333âff33äffˇˇãffÃÃåffôôçfffféff33èffê33ˇˇˇˇë33ˇˇÃÃí33ˇˇôôì33ˇˇffî33ˇˇ33ï33ˇˇñ33ÃÃˇˇó33ÃÃÃÃò33ÃÃôôô33ÃÃffö33ÃÃ33õ33ÃÃú33ôôˇˇù33ôôÃÃû33ôôôôü33ôôff†33ôô33°33ôô¢33ffˇˇ£33ffÃç33ffôô•33ffff¶33ff33ß33ff®3333ˇˇ©3333ÃÙ3333ôô´3333ff¨333333≠3333Æ33ˇˇØ33ÃÃ∞33ôô±33ff≤3333≥33¥ˇˇˇˇµˇˇÃÃ∂ˇˇôô∑ˇˇff∏ˇˇ33πˇˇ∫ÃÃˇˇªÃÃÃúÃÃôôΩÃÃffæÃÃ33øÃÿôôˇˇ¡ôôÃìôôôô√ôôffƒôô33≈ôôΔffˇˇ«ffÃûffôô…ffff ff33ÀffÃ33ˇˇÕ33ÃÃŒ33ôôœ33ff–3333—33“ˇˇ”ÃÑôô’ff÷33◊ÿˇˇˇŸ˘`˘`˘`⁄Ú–Ú–Ú–€Ï@Ï@Ï@‹Â∞Â∞Â∞›fl fl fl fiÿêÿêÿêfl“““‡ÀpÀpÀp·ƒ‡ƒ‡ƒ‡‚æPæPæP„∑¿∑¿∑¿‰±0±0±0™†™†™†Ê§§§ÁùÄùÄùÄËñññÈê`ê`ê`Íâ–â–â–ÎÉ@É@É@Ï|∞|∞|∞Ìv v v ÓoêoêoêÔiiibpbpbpÒ[‡[‡[‡ÚUPUPUPÛN¿N¿N¿ÙH0H0H0ıA†A†A†ˆ;;;˜4Ä4Ä4į---˘'`'`'`˙ – – –˚@@@¸∞∞∞˝
  7514.  
  7515.  
  7516.  ˛êêê@ª‰q$,'ÅÚ
  7517. ∑
  7518. ªˇªˇÀˇˇ˘ÅÒ1
  7519. π∫ˇªˇÀˇˇ˘Åª
  7520. πˇªˇÀˇˇ˘&Å
  7521. Ω
  7522. ∑ˇ√
  7523. 
  7524. 
  7525. ˇÀˇˇ˘(ÅÔ1
  7526. ø1
  7527. ∂ˇ…1
  7528. 1˙ˇÀˇˇ˘'ÅÓ
  7529. ¡
  7530. µˇŒ
  7531.  
  7532. 
  7533. ÙˇÀˇˇ˘)ÅÌ
  7534. ƒ
  7535. 
  7536. ¥ˇ‘
  7537. 
  7538. 
  7539. 
  7540. ÔˇÀˇˇ˘&ÅÏ
  7541. ≈≤ˇŸ1
  7542. 1
  7543. ÈˇÀˇˇ˘(ÅÏ
  7544. «
  7545. ±ˇfl
  7546.  
  7547. 
  7548.  
  7549. ‰ˇÀˇˇ˘(ÅÎ
  7550.  
  7551. 
  7552. ∞ˇ‰
  7553. 
  7554. 
  7555. fiˇÀˇˇ˘(ÅÍ
  7556. Ã1
  7557. ÆˇÍ
  7558. 1
  7559. ŸˇÀˇˇ˘&ÅÈ
  7560. Õ
  7561. ≠ˇÔ
  7562.  
  7563. ”ˇÀˇˇ˘(ÅÈ
  7564. œ
  7565. ¨ˇı
  7566. 
  7567. 
  7568. ŒˇÀˇˇ˘(ÅË
  7569. “1´ˇ˙1
  7570. 1»ˇÀˇˇ˘&ÅÁ
  7571.  
  7572. ‘
  7573. ©ˇ
  7574.  
  7575. 
  7576.  
  7577. √ˇÀˇˇ˘$ÅÊ
  7578. ÷
  7579. ¨
  7580. 
  7581. 
  7582. 
  7583. ΩˇÀˇˇ˘&ÅÂ◊
  7584. ∞1
  7585. 1
  7586. ˛ˇªˇÀˇˇ˘)ÅÂ
  7587.  
  7588. ⁄
  7589. µ
  7590.  
  7591. 
  7592.  
  7593. ˘ˇªˇÀˇˇ˘#ʼn
  7594. ‹
  7595. ∏
  7596. 
  7597. 
  7598. Ûˇ˘Çˇ˘ˇ˘0Å„fi1Ω
  7599. 1
  7600. Óˇ˘ˇƒˇÀˇ˘ˇ˘ˇ˘/Å‚
  7601. ‡
  7602.  
  7603. ¡
  7604.  
  7605. ˡ˘ˇƒˇÀˇ˘ˇ˘ˇ˘0Å‚
  7606. ‚
  7607. ≈
  7608. 
  7609. 
  7610. „ˇ˘ˇƒˇÀˇ˘ˇ˘ˇ˘/Å·‰
  7611. …1
  7612. 1›ˇ˘ˇƒˇÀˇ˘ˇ˘ˇ˘0Ň
  7613. ʌ
  7614.  
  7615. 
  7616.  
  7617. ÿˇ˘ˇƒˇÀˇ˘ˇ˘ˇ˘0Åfl
  7618. È
  7619. “
  7620. 
  7621. 
  7622. “ˇ˘ˇƒˇÀˇ˘ˇ˘ˇ˘7ÅfiÍ1÷1
  7623. 1
  7624. Õˇ˘ˇ¯˛ˇ›ˇıˇÀˇ˘ˇ˘ˇ˘[Åfi
  7625. Ï
  7626.  
  7627. ⁄
  7628. 
  7629.  
  7630. «ˇ˘ˇ˘˛˛ ˛ˇ˛ˇˇ˛ˇˇ˛ˇˇˇˇˇ˛ˇ˛ˇ˛ˇˇ˛ıˇÀˇ˘ˇ˘ˇ˘ZÅ›
  7631. Ó
  7632. fl
  7633. 
  7634. 
  7635. 
  7636. ¬ˇ˘ˇ˘ˇ¸"ˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇıˇÀˇ˘ˇ˘ˇ˘ZÅ‹1Ò
  7637. ‰
  7638. 1
  7639. ºˇ˘ˇ˘ˇ¸ˇˇˇˇˇˇˇˇˇˇˇ˝ˇˇˇˇıˇÀˇ˘ˇ˘ˇ˘YÅ€ÚÁ
  7640.  
  7641. ∂ˇ˘ˇ˘ˇ˛ˇ˛ˇ˛ˇ˛ˇˇˇˇ˛ˇ˛˝ˇˇˇıˇÀˇ˘ˇ˘ˇ˘YÅ€
  7642. Ù
  7643. Ï
  7644. 
  7645. 
  7646. ±ˇ˘ˇ¯˛ˇ˛    ˇˇˇˇˇ˛ˇˇˇˇˇˇˇˇˇˇıˇÀˇ˘ˇ˘ˇ˘1Å⁄Ù
  7647. 1
  7648. 1´ˇ˘ˇËˇfiˇÀˇ˘ˇ˘ˇ˘*Å¿
  7649.  
  7650. 
  7651.  
  7652. ¶ˇ˘ˇËˇfiˇÀˇ˘ˇ˘ˇ˘%Å≈
  7653. 
  7654. 
  7655. †ˇ˘ˇƒˇÀˇ˘ˇ˘ˇ˘/ÅÀ1
  7656. 1
  7657. õˇ˘ˇ¯ˇÛˇˇfiˇÀˇ˘ˇ˘ˇ˘AÅÀïˇ˘ˇ˘ˇˇ˛ˇ˛ˇˇˇ˛ˇ ˇˇˇˇ˛ˇÍˇÀˇ˘ˇ˘ˇ˘=ÅÅfiˇ˘ˇ¯ˇˇˇˇˇˇˇˇˇˇˇˇˇˇÈˇÀˇ˘ˇ˘ˇ˘=ÅÅfiˇ˘ˇ¯
  7658. ˇˇˇˇˇˇ˝
  7659. ˇˇˇˇˇˇˇÍˇÀˇ˘ˇ˘ˇ˘?ÅÅfiˇ˘ˇ¯ˇˇ˛ˇˇˇˇ˛ˇˇˇ˛ˇ˛ˇÎˇÀˇ˘ˇ˘ˇ˘<ÅÅfiˇ˘ˇ¯˝ˇˇˇˇˇˇˇˇˇˇˇˇÍˇÀˇ˘ˇ˘ˇ˘ÅÅfiˇ˘ˇƒˇÀˇ˘ˇ˘ˇ˘ÅÅfiˇ˘ˇƒˇÀˇ˘ˇ˘ˇ˘ÅÅfiˇ˘ˇƒˇÀˇ˘ˇ˘ˇ˘ÅÅfiˇ˘ˇƒˇÀˇ˘ˇ˘ˇ˘ÅÅfiˇ˘ˇƒˇÀˇ˘ˇ˘ˇ˘ÅÅfiˇ˘ˇƒˇÀˇ˘ˇ˘ˇ˘8Å’˝ˇÛˇˇÊˇˇ˛ˇÚˇÓˇÂˇ˘ˇƒˇÀˇ˘ˇ˘ˇ˘tÅ’ˇ˛ˇˇ˛ˇ˛
  7660. ˇ˛ˇˇ˛ˇ˛ˇˇ˛˝ˇˇ˛ˇ˛
  7661. ˇ˛ˇ˛ˇˇ˛ˇˇ¸ˇ˛ˇˇˇˇ˛ˇ˛ˇˇ˛ˇ˛ˇ˛˛ˇÂˇ˘ˇË∏ˇÔˇ˘ˇ˘ˇ˘æÅ’ˇ˛ˇˇˇˇˇˇˇˇˇˇˇˇ˝ˇˇˇˇ˛ˇˇˇˇ˛ˇˇ˚ˇˇˇˇˇˇˇˇˇˇˇˇˇÂˇ˘ˇËHˇˇÔˇ˘ˇ˘ˇ˘πÅ’¸ˇˇˇˇˇ˝    ˇˇˇˇˇˇ˝ˇ˝ˇ ˇˇˇˇˇ˛ˇˇ¸ˇ˝ˇ
  7662. ˇˇˇˇˇˇ˝ˇˇˇÂˇ˘ˇËGˇ˛ˇÒˇ˘ˇ˘ˇ˘ªÅ’ˇ˛ˇˇˇˇ˛ˇˇˇ˛ˇ˛ˇ˝ˇˇ˚    ˛ˇ˛ˇˇ˛ˇ˛˝ˇˇ¸ ˇˇ˛ˇˇˇˇ˝ˇˇÂˇ˘ˇËGˇ˛ˇÒˇ˘ˇ˘ˇ˘ªÅ’ˇ˛˛ˇˇˇ˛
  7663. ˇˇˇˇˇˇˇˇ˝ˇˇˇ˛ˇ˛ˇˇˇ˛ˇˇ¸ˇˇˇ˛˝ˇ
  7664. ˇˇˇˇˇ˛˛ˇÂˇ˘ˇËGˇ˛ˇÒˇ˘ˇ˘ˇ˘gÅÅfiˇ˘ˇËGˇ˛ˇÒˇ˘ˇ˘ˇ˘gÅÅfiˇ˘ˇËGˇ˛ˇÒˇ˘ˇ˘ˇ˘gÅÅfiˇ˘ˇËGˇ˛ˇÒˇ˘ˇ˘ˇ˘Å’ˇ˜ˇˇÚˇ˝ˇÒˇˇÒˇœˇ˘ˇËGˇ˛ˇÒˇ˘ˇ˘ˇ˘≠Å÷ˇˇˇˇ¸˛˛ˇˇ˛ˇˇˇˇˇˇˇ˛ˇˇ˛ˇˇˇˇ¸˛˛ˇ˛˛˛ˇˇ˛ˇ˝ˇˇˇˇ“ˇ˘ˇËGˇ˛ˇÚˇˇ˘ˇ˘ˇ˘´Å’ˇˇˇ˛ˇˇˇˇ˛ˇˇˇˇˇˇˇˇˇˇˇˇ˙ ˇˇˇˇˇˇˇ¸ˇˇˇ”ˇ˘ˇËGˇ˛ˇÚˇ¯ˇ˘ˇ˘©Å’ˇˇˇ˛ ˇˇˇˇˇ˛ˇˇˇˇ˛ˇˇ¸ˇ˙ˇˇˇ¸ˇˇ¸ˇˇˇ”ˇ˘ˇËˇ˝ˇ0ˇˇˇ˛ˇ˚˛ˇ˚ˇ¯ˇ˘ˇ˘ØÅ’ˇˇˇ˛ˇ˛ˇ˛ˇˇˇˇˇˇˇˇˇ˛ˇ˛ˇ˙ˇ˛ˇˇ˛ˇˇ¸ˇˇˇ”ˇ˘ˇËGˇˇˇ˛ˇ˛ˇ˛ˇˇ˛ˇ˛ˇ˛ˇˇˇ˛˛ˇ˝˝ˇ¸˛ˇ¯ˇ˘ˇ˘™Å’ˇˇˇ¸˝ˇˇ˛ˇ˛ˇ    ˇˇˇˇˇ˛ˇˇˇˇ˝ˇˇˇ˛ˇˇˇˇ¸ˇˇˇ“ˇ˘ˇËGˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ˛ˇıˇˆˇ˘ˇ˘kÅ√ˇÁˇ∏ˇ˘ˇËˇ¸ˇ/ˇˇˇˇˇˇˇˇˇˇˇ˛ˇ˛¸ˇˇ˘ˇ˘iÅ√ˇùˇ˘ˇËGˇ˛˛ˇˇˇˇ˛ˇˇˇ˛ˇ˛ˇ˛ˇ¸˝ˇÒˇ˘ˇ˘hÅÅfiˇ˘ˇËˇˇ˛ˇ-ˇˇˇˇˇˇˇˇˇˇˇ˛ˇ˙ˇˇÒˇ˘ˇ˘òź@ĪHHQoD ¥Ä˛ˇˇˇˇˇˇˇˇˇˇÃÃˇˇˇˇôôˇˇˇˇffˇˇˇˇ33ˇˇˇˇˇˇÃÃˇˇˇˇÃÃÃÃˇˇÃÃôô    ˇˇÃÃff
  7665. ˇˇÃÃ33 ˇˇÃà ˇˇôôˇˇ
  7666. ˇˇôôÃÃˇˇôôôôˇˇôôffˇˇôô33ˇˇôôˇˇffˇˇˇˇffÃÃˇˇffôôˇˇffffˇˇff33ˇˇffˇˇ33ˇˇˇˇ33ÃÃˇˇ33ôôˇˇ33ffˇˇ3333ˇˇ33ˇˇˇˇˇˇÃàˇˇôô!ˇˇff"ˇˇ33#ˇˇ$ÃÃˇˇˇˇ%ÃÃˇˇÃÃ&ÃÃˇˇôô'ÃÃˇˇff(ÃÃˇˇ33)ÃÃˇˇ*ÃÃÃÃˇˇ+ÃÃÃÃÃÃ,ÃÃÃÃôô-ÃÃÃÃff.ÃÃÃÃ33/ÃÃÃÃ0ÃÃôôˇˇ1ÃÃôôÃÃ2ÃÃôôôô3ÃÃôôff4ÃÃôô335ÃÃôô6ÃÃffˇˇ7ÃÃffÃÃ8ÃÃffôô9ÃÃffff:ÃÃff33;ÃÃff<ÃÃ33ˇˇ=ÃÃ33ÃÃ>ÃÃ33ôô?ÃÃ33ff@ÃÃ3333AÃÃ33BÃÃˇˇCÃÃÃÃDÃÃôôEÃÃffFÃÃ33GÃÃHôôˇˇˇˇIôôˇˇÃÃJôôˇˇôôKôôˇˇffLôôˇˇ33MôôˇˇNôôÃÃˇˇOôôÃÃÃÃPôôÃÃôôQôôÃÃffRôôÃÃ33SôôÃÃTôôôôˇˇUôôôôÃÃVôôôôôôWôôôôffXôôôô33YôôôôZôôffˇˇ[ôôffÃÃ\ôôffôô]ôôffff^ôôff33_ôôff`ôô33ˇˇaôô33ÃÃbôô33ôôcôô33ffdôô3333eôô33fôôˇˇgôôÃÃhôôôôiôôffjôô33kôôlffˇˇˇˇmffˇˇÃÃnffˇˇôôoffˇˇffpffˇˇ33qffˇˇrffÃÃˇˇsffÃÃÃÃtffÃÃôôuffÃÃffvffÃÃ33wffÃÃxffôôˇˇyffôôÃÃzffôôôô{ffôôff|ffôô33}ffôô~ffffˇˇffffÃÃÄffffôôÅffffffÇffff33ÉffffÑff33ˇˇÖff33ÃÃÜff33ôôáff33ffàff3333âff33äffˇˇãffÃÃåffôôçfffféff33èffê33ˇˇˇˇë33ˇˇÃÃí33ˇˇôôì33ˇˇffî33ˇˇ33ï33ˇˇñ33ÃÃˇˇó33ÃÃÃÃò33ÃÃôôô33ÃÃffö33ÃÃ33õ33ÃÃú33ôôˇˇù33ôôÃÃû33ôôôôü33ôôff†33ôô33°33ôô¢33ffˇˇ£33ffÃç33ffôô•33ffff¶33ff33ß33ff®3333ˇˇ©3333ÃÙ3333ôô´3333ff¨333333≠3333Æ33ˇˇØ33ÃÃ∞33ôô±33ff≤3333≥33¥ˇˇˇˇµˇˇÃÃ∂ˇˇôô∑ˇˇff∏ˇˇ33πˇˇ∫ÃÃˇˇªÃÃÃúÃÃôôΩÃÃffæÃÃ33øÃÿôôˇˇ¡ôôÃìôôôô√ôôffƒôô33≈ôôΔffˇˇ«ffÃûffôô…ffff ff33ÀffÃ33ˇˇÕ33ÃÃŒ33ôôœ33ff–3333—33“ˇˇ”ÃÑôô’ff÷33◊ÿˇˇˇŸ˘`˘`˘`⁄Ú–Ú–Ú–€Ï@Ï@Ï@‹Â∞Â∞Â∞›fl fl fl fiÿêÿêÿêfl“““‡ÀpÀpÀp·ƒ‡ƒ‡ƒ‡‚æPæPæP„∑¿∑¿∑¿‰±0±0±0™†™†™†Ê§§§ÁùÄùÄùÄËñññÈê`ê`ê`Íâ–â–â–ÎÉ@É@É@Ï|∞|∞|∞Ìv v v ÓoêoêoêÔiiibpbpbpÒ[‡[‡[‡ÚUPUPUPÛN¿N¿N¿ÙH0H0H0ıA†A†A†ˆ;;;˜4Ä4Ä4į---˘'`'`'`˙ – – –˚@@@¸∞∞∞˝
  7667.  
  7668.  
  7669.  ˛êêê@Ī$qd,'sÅ’˛ˇ›ˇ˛ˇˇ˛ˇˇºˇ˘ˇËGˇ˛ˇËˇ˘ˇ˘¨Å÷˛˛ ˛ˇ˛ˇˇ˛ˇˇ˛ˇˇˇˇˇ˛ˇ˛ˇ˛ˇˇ˛˛˛ˇ˛˛ˇ    ˛ˇ˛ˇ˛ˇ˛˛ˇˇˇ˛ˇ”ˇ˘ˇËGˇ˛ˇËˇ˘ˇ˘´Å÷ˇ¸"ˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ˛ˇˇ˛ˇˇˇˇˇˇ˛ ˇˇˇˇˇˇˇ“ˇ˘ˇËGˇ˛ˇËˇ˘ˇ˘¶Å÷ˇ¸ˇˇˇˇˇˇˇˇˇˇˇ˝ˇˇˇˇ˛ˇˇˇˇˇˇˇˇˇˇˇˇ˚ˇ“ˇ˘ˇËGˇ˛ˇËˇ˘ˇ˘¨Å÷ˇ˛ˇ˛ˇ˛ˇ˛ˇˇˇˇ˛ˇ˛˝ˇˇˇ˛ˇ˛ˇ˛ˇˇˇˇ˛ˇˇˇ˛ˇ“ˇ˘ˇËGˇ˛ˇËˇ˘ˇ˘¨Å’˛ˇ˛    ˇˇˇˇˇ˛ˇˇˇˇˇˇˇˇˇˇ˛ˇˇ˝ˇˇˇ˛ˇ˛ˇˇˇˇˇ’ˇ˘ˇËGˇ˛ˇËˇ˘ˇ˘mÅ≈ˇ–ˇ˙ˇ’ˇ˘ˇËGˇ˛ˇËˇ˘ˇ˘jÅ≈ˇ“ˇˇÃˇ˘ˇËGˇ˛ˇËˇ˘ˇ˘cÅÅfiˇ˘ˇËGˇ˛ˇËˇ˘ˇ˘ÅÅ ˇ˛ˇˇ¯ˇˇ˘ˇÌˇˇ˜ˇˇ’ˇ˘ˇËGˇ˛ˇËˇ˘ˇ˘kÅ’ˇ˛ˇˇ˛˛˛ˇˇˇˇ˛˛ˇ˛ˇ˛ˇ˛ˇ˛ˇ˛ˇˇ˛¸#ˇˇˇˇ˛ˇˇ˛ˇ˛ˇ˛ˇ˛ˇˇˇˇ˛ˇ˛ˇ›ˇ˘ˇË∂ˇËˇ˘ˇ˘hÅ‘˛ˇˇˇˇ˛ˇˇˇˇ˝˛ˇˇˇˇ˛ˇˇˇ¸"ˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ›ˇ˘ˇÊ∏ˇËˇ˘ˇ˘oÅ÷ ˇˇˇˇˇˇˇ˛ˇˇˇˇˇˇˇˇˇˇˇ˛ˇˇˇ˛ˇˇˇˇˇˇˇˇˇˇ˛ˇˇˇˇˇˇˇˇˇ›ˇ˘ˇÊ∏ˇËˇ˘ˇ˘kÅ÷ ˛ˇ˛ˇˇ˛˛˛ˇˇˇ˛ˇ˛ˇˇˇ˛ˇ˛ˇ˛$ˇˇ˛ˇ˛ˇ˛ˇ˛ˇ˛ˇˇˇ˛ˇˇˇ›ˇ˘ˇÑˇ˘ˇ˘bÅ’˝ˇˇ˛˛ˇ˛ˇˇˇˇ˛˝ˇˇ˛ˇ˝ˇˇˇ¸˛ˇ˛ˇ˛ˇ    ˇˇˇˇ˛ˇ
  7670. ˇˇˇˇˇˇˇflˇ˘ˇÑˇ˘ˇ˘ Å¥ˇˇ˛ˇ¬ˇ˘ˇÑˇ˘ˇ˘!ŵˇ˛ˇ˛ˇ¬ˇ˘ˇÑˇ˘ˇ˘ÅÅfiˇ˘ˇÑˇ˘ˇ˘ÅÅfiˇ˘ˇÑˇ˘ˇ˘ÅÅfiˇ˘ˇË∏ˇÊˇ˘ˇ˘bÅÅfiˇ˘ˇËHˇˇÊˇ˘ˇ˘cÅÅfiˇ˘ˇËGˇ˛ˇËˇ˘ˇ˘cÅÅfiˇ˘ˇËGˇ˛ˇËˇ˘ˇ˘cÅÅfiˇ˘ˇËGˇ˛ˇËˇ˘ˇ˘cÅÅfiˇ˘ˇËGˇ˛ˇËˇ˘ˇ˘cÅÅfiˇ˘ˇËGˇ˛ˇËˇ˘ˇ˘cÅÅfiˇ˘ˇËGˇ˛ˇËˇ˘ˇ˘cÅÅfiˇ˘ˇËGˇ˛ˇËˇ˘ˇ˘cÅÅfiˇ˘ˇËGˇ˛ˇËˇ˘ˇ˘cÅÅfiˇ˘ˇËGˇ˛ˇËˇ˘ˇ˘bÅÅfiˇ˘ˇËˇ˝ˇ0ˇˇˇˇ˛ˇËˇ˘ˇ˘cÅÅfiˇ˘ˇËGˇˇˇ˛ˇ˛ˇ˛ˇˇ˛ˇ˛ˇ˛ˇˇˇˇ˛ˇËˇ˘ˇ˘cÅÅfiˇ˘ˇËGˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ˛ˇËˇ˘ˇ˘aÅÅfiˇ˘ˇËˇ¸ˇ/ˇˇˇˇˇˇˇˇˇˇˇ˛ˇËˇ˘ˇ˘cÅÅfiˇ˘ˇËGˇ˛˛ˇˇˇˇ˛ˇˇˇ˛ˇ˛˛˛ˇËˇ˘ˇ˘bÅÅfiˇ˘ˇËˇˇ˛ˇˇˇˇˇˇˇˇˇˇˇ˝ˇ˛ˇËˇ˘ˇ˘cÅÅfiˇ˘ˇËGˇ˛ˇËˇ˘ˇ˘cÅÅfiˇ˘ˇËGˇ˛ˇËˇ˘ˇ˘cÅÅfiˇ˘ˇËGˇ˛ˇËˇ˘ˇ˘cÅÅfiˇ˘ˇËGˇ˛ˇËˇ˘ˇ˘cÅÅfiˇ˘ˇËGˇ˛ˇËˇ˘ˇ˘cÅÅfiˇ˘ˇËGˇ˛ˇËˇ˘ˇ˘cÅÅfiˇ˘ˇËGˇ˛ˇËˇ˘ˇ˘cÅÅfiˇ˘ˇËGˇ˛ˇËˇ˘ˇ˘cÅÅfiˇ˘ˇËGˇ˛ˇËˇ˘ˇ˘cÅÅfiˇ˘ˇËGˇ˛ˇËˇ˘ˇ˘ÅÅfiˇ˘ˇË∂ˇËˇ˘ˇ˘ÅÅfiˇ˘ˇÊ∏ˇËˇ˘ˇ˘ÅÅfiˇ˘ˇÊ∏ˇËˇ˘ˇ˘ÅÅfiˇ˘ˇÑˇ˘ˇ˘ÅÅfiˇ˘ˇÑˇ˘ˇ˘ÅÅfiˇ˘ˇÑˇ˘ˇ˘ÅÅfiˇ˘ˇƒˇ¬ˇ˘ˇ˘ÅÅfiˇ˘ˇÑˇ˘ˇ˘ÅÅfiˇ˘ˇÑˇ˘ˇ˘ÅÅfiˇ˘ˇÑˇ˘ˇ˘ÅÅfiˇ˘ˇÑˇ˘ˇ˘ÅÅfiˇ˘ˇÑˇ˘ˇ˘ÅÅfiˇ˘ˇƒˇ¬ˇ˘ˇ˘ÅÅfiˇ˘ˇÑˇ˘ˇ˘ÅÅfiˇ˘ˇÑˇ˘ˇ˘ÅÅfiˇ˘ˇÑˇ˘ˇ˘ÅÅfiˇ˘ˇÑˇ˘ˇ˘ÅÅfiˇ˘ˇÑˇ˘ˇ˘òÅºÄÆªHHQo< µÄ˛ˇˇˇˇˇˇˇˇˇˇÃÃˇˇˇˇôôˇˇˇˇffˇˇˇˇ33ˇˇˇˇˇˇÃÃˇˇˇˇÃÃÃÃˇˇÃÃôô    ˇˇÃÃff
  7671. ˇˇÃÃ33 ˇˇÃà ˇˇôôˇˇ
  7672. ˇˇôôÃÃˇˇôôôôˇˇôôffˇˇôô33ˇˇôôˇˇffˇˇˇˇffÃÃˇˇffôôˇˇffffˇˇff33ˇˇffˇˇ33ˇˇˇˇ33ÃÃˇˇ33ôôˇˇ33ffˇˇ3333ˇˇ33ˇˇˇˇˇˇÃàˇˇôô!ˇˇff"ˇˇ33#ˇˇ$ÃÃˇˇˇˇ%ÃÃˇˇÃÃ&ÃÃˇˇôô'ÃÃˇˇff(ÃÃˇˇ33)ÃÃˇˇ*ÃÃÃÃˇˇ+ÃÃÃÃÃÃ,ÃÃÃÃôô-ÃÃÃÃff.ÃÃÃÃ33/ÃÃÃÃ0ÃÃôôˇˇ1ÃÃôôÃÃ2ÃÃôôôô3ÃÃôôff4ÃÃôô335ÃÃôô6ÃÃffˇˇ7ÃÃffÃÃ8ÃÃffôô9ÃÃffff:ÃÃff33;ÃÃff<ÃÃ33ˇˇ=ÃÃ33ÃÃ>ÃÃ33ôô?ÃÃ33ff@ÃÃ3333AÃÃ33BÃÃˇˇCÃÃÃÃDÃÃôôEÃÃffFÃÃ33GÃÃHôôˇˇˇˇIôôˇˇÃÃJôôˇˇôôKôôˇˇffLôôˇˇ33MôôˇˇNôôÃÃˇˇOôôÃÃÃÃPôôÃÃôôQôôÃÃffRôôÃÃ33SôôÃÃTôôôôˇˇUôôôôÃÃVôôôôôôWôôôôffXôôôô33YôôôôZôôffˇˇ[ôôffÃÃ\ôôffôô]ôôffff^ôôff33_ôôff`ôô33ˇˇaôô33ÃÃbôô33ôôcôô33ffdôô3333eôô33fôôˇˇgôôÃÃhôôôôiôôffjôô33kôôlffˇˇˇˇmffˇˇÃÃnffˇˇôôoffˇˇffpffˇˇ33qffˇˇrffÃÃˇˇsffÃÃÃÃtffÃÃôôuffÃÃffvffÃÃ33wffÃÃxffôôˇˇyffôôÃÃzffôôôô{ffôôff|ffôô33}ffôô~ffffˇˇffffÃÃÄffffôôÅffffffÇffff33ÉffffÑff33ˇˇÖff33ÃÃÜff33ôôáff33ffàff3333âff33äffˇˇãffÃÃåffôôçfffféff33èffê33ˇˇˇˇë33ˇˇÃÃí33ˇˇôôì33ˇˇffî33ˇˇ33ï33ˇˇñ33ÃÃˇˇó33ÃÃÃÃò33ÃÃôôô33ÃÃffö33ÃÃ33õ33ÃÃú33ôôˇˇù33ôôÃÃû33ôôôôü33ôôff†33ôô33°33ôô¢33ffˇˇ£33ffÃç33ffôô•33ffff¶33ff33ß33ff®3333ˇˇ©3333ÃÙ3333ôô´3333ff¨333333≠3333Æ33ˇˇØ33ÃÃ∞33ôô±33ff≤3333≥33¥ˇˇˇˇµˇˇÃÃ∂ˇˇôô∑ˇˇff∏ˇˇ33πˇˇ∫ÃÃˇˇªÃÃÃúÃÃôôΩÃÃffæÃÃ33øÃÿôôˇˇ¡ôôÃìôôôô√ôôffƒôô33≈ôôΔffˇˇ«ffÃûffôô…ffff ff33ÀffÃ33ˇˇÕ33ÃÃŒ33ôôœ33ff–3333—33“ˇˇ”ÃÑôô’ff÷33◊ÿˇˇˇŸ˘`˘`˘`⁄Ú–Ú–Ú–€Ï@Ï@Ï@‹Â∞Â∞Â∞›fl fl fl fiÿêÿêÿêfl“““‡ÀpÀpÀp·ƒ‡ƒ‡ƒ‡‚æPæPæP„∑¿∑¿∑¿‰±0±0±0™†™†™†Ê§§§ÁùÄùÄùÄËñññÈê`ê`ê`Íâ–â–â–ÎÉ@É@É@Ï|∞|∞|∞Ìv v v ÓoêoêoêÔiiibpbpbpÒ[‡[‡[‡ÚUPUPUPÛN¿N¿N¿ÙH0H0H0ıA†A†A†ˆ;;;˜4Ä4Ä4į---˘'`'`'`˙ – – –˚@@@¸∞∞∞˝
  7673.  
  7674.  
  7675.  ˛êêêÄÆªdqí,'ÅÅfiˇ˘ˇƒˇ¬ˇ˘ˇ˘ÅÅfiˇ˘ˇÑˇ˘ˇ˘ÅÅfiˇ˘ˇÑˇ˘ˇ˘ÅÅfiˇ˘ˇÑˇ˘ˇ˘ÅÅfiˇ˘ˇË∏ˇÊˇ˘ˇ˘bÅÅfiˇ˘ˇËHˇˇÊˇ˘ˇ˘cÅÅfiˇ˘ˇËGˇ˛ˇËˇ˘ˇ˘cÅÅfiˇ˘ˇËGˇ˛ˇËˇ˘ˇ˘cÅÅfiˇ˘ˇËGˇ˛ˇËˇ˘ˇ˘cÅÅfiˇ˘ˇËGˇ˛ˇËˇ˘ˇ˘cÅÅfiˇ˘ˇËGˇ˛ˇËˇ˘ˇ˘cÅÅfiˇ˘ˇËGˇ˛ˇËˇ˘ˇ˘cÅÅfiˇ˘ˇËGˇ˛ˇËˇ˘ˇ˘cÅÅfiˇ˘ˇËGˇ˛ˇËˇ˘ˇ˘cÅÅfiˇ˘ˇËGˇ˛ˇËˇ˘ˇ˘cÅÅfiˇ˘ˇËGˇˇˇ˛ˇ˛ˇ˛ˇËˇ˘ˇ˘cÅÅfiˇ˘ˇËˇˇˇˇ˛ˇˇˇ˛ˇˇˇ˛ˇ˛ˇ˛ˇËˇ˘ˇ˘cÅÅfiˇ˘ˇËGˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ˛ˇËˇ˘ˇ˘cÅÅfiˇ˘ˇËˇ˛˛ˇ0˛ˇ˛ˇˇˇˇˇ˛ˇˇˇˇ˛ˇËˇ˘ˇ˘cÅÅfiˇ˘ˇËGˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ˛ˇËˇ˘ˇ˘cÅÅfiˇ˘ˇËˇˇ˛ˇ-ˇˇˇˇˇˇˇˇˇˇˇˇ˛ˇËˇ˘ˇ˘cÅÅfiˇ˘ˇËGˇ˛ˇËˇ˘ˇ˘cÅÅfiˇ˘ˇËGˇ˛ˇËˇ˘ˇ˘cÅÅfiˇ˘ˇËGˇ˛ˇËˇ˘ˇ˘cÅÅfiˇ˘ˇËGˇ˛ˇËˇ˘ˇ˘cÅÅfiˇ˘ˇËGˇ˛ˇËˇ˘ˇ˘cÅÅfiˇ˘ˇËGˇ˛ˇËˇ˘ˇ˘cÅÅfiˇ˘ˇËGˇ˛ˇËˇ˘ˇ˘cÅÅfiˇ˘ˇËGˇ˛ˇËˇ˘ˇ˘cÅÅfiˇ˘ˇËGˇ˛ˇËˇ˘ˇ˘cÅÅfiˇ˘ˇËGˇ˛ˇËˇ˘ˇ˘ÅÅfiˇ˘ˇË∂ˇËˇ˘ˇ˘ÅÅfiˇ˘ˇÊ∏ˇËˇ˘ˇ˘ÅÅfiˇ˘ˇÊ∏ˇËˇ˘ˇ˘ÅÅfiˇ˘ˇÑˇ˘ˇ˘ÅÅfiˇ˘ˇÑˇ˘ˇ˘ÅÅfiˇ˘ˇÑˇ˘ˇ˘ÅÅfiˇ˘ˇÑˇ˘ˇ˘ÅÅfiˇ˘ˇÑˇ˘ˇ˘ÅÅfiˇ˘ˇÑˇ˘ˇ˘ÅÅfiˇ˘ˇÑˇ˘ˇ˘ÅÅfiˇ˘Çˇ˘ˇ˘ÅÅfiˇÅÚˇ˘ÅÅfiˇÅÚˇ˘ÅÅfiˇÅÚˇ˘ÅÅfiˇÅÚˇ˘ò8@ª@ªíq“,    ›    ›    ›    ›    ›ˇ……………………………………………………………………………………………………………………………………………………………ò8@Ī@Ī“q,…………………………………………………………………………………………………………………………………………………………………………ò8ÄÆªÄƪq@,…………………………………………………………………………………………………………………………òź@ªHHQoD ∂IJˇˇˇˇˇˇˇˇˇˇÃÃˇˇˇˇôôˇˇˇˇffˇˇˇˇ33ˇˇˇˇˇˇÃÃˇˇˇˇÃÃÃÃˇˇÃÃôô    ˇˇÃÃff
  7676. ˇˇÃÃ33 ˇˇÃà ˇˇôôˇˇ
  7677. ˇˇôôÃÃˇˇôôôôˇˇôôffˇˇôô33ˇˇôôˇˇffˇˇˇˇffÃÃˇˇffôôˇˇffffˇˇff33ˇˇffˇˇ33ˇˇˇˇ33ÃÃˇˇ33ôôˇˇ33ffˇˇ3333ˇˇ33ˇˇˇˇˇˇÃàˇˇôô!ˇˇff"ˇˇ33#ˇˇ$ÃÃˇˇˇˇ%ÃÃˇˇÃÃ&ÃÃˇˇôô'ÃÃˇˇff(ÃÃˇˇ33)ÃÃˇˇ*ÃÃÃÃˇˇ+ÃÃÃÃÃÃ,ÃÃÃÃôô-ÃÃÃÃff.ÃÃÃÃ33/ÃÃÃÃ0ÃÃôôˇˇ1ÃÃôôÃÃ2ÃÃôôôô3ÃÃôôff4ÃÃôô335ÃÃôô6ÃÃffˇˇ7ÃÃffÃÃ8ÃÃffôô9ÃÃffff:ÃÃff33;ÃÃff<ÃÃ33ˇˇ=ÃÃ33ÃÃ>ÃÃ33ôô?ÃÃ33ff@ÃÃ3333AÃÃ33BÃÃˇˇCÃÃÃÃDÃÃôôEÃÃffFÃÃ33GÃÃHôôˇˇˇˇIôôˇˇÃÃJôôˇˇôôKôôˇˇffLôôˇˇ33MôôˇˇNôôÃÃˇˇOôôÃÃÃÃPôôÃÃôôQôôÃÃffRôôÃÃ33SôôÃÃTôôôôˇˇUôôôôÃÃVôôôôôôWôôôôffXôôôô33YôôôôZôôffˇˇ[ôôffÃÃ\ôôffôô]ôôffff^ôôff33_ôôff`ôô33ˇˇaôô33ÃÃbôô33ôôcôô33ffdôô3333eôô33fôôˇˇgôôÃÃhôôôôiôôffjôô33kôôlffˇˇˇˇmffˇˇÃÃnffˇˇôôoffˇˇffpffˇˇ33qffˇˇrffÃÃˇˇsffÃÃÃÃtffÃÃôôuffÃÃffvffÃÃ33wffÃÃxffôôˇˇyffôôÃÃzffôôôô{ffôôff|ffôô33}ffôô~ffffˇˇffffÃÃÄffffôôÅffffffÇffff33ÉffffÑff33ˇˇÖff33ÃÃÜff33ôôáff33ffàff3333âff33äffˇˇãffÃÃåffôôçfffféff33èffê33ˇˇˇˇë33ˇˇÃÃí33ˇˇôôì33ˇˇffî33ˇˇ33ï33ˇˇñ33ÃÃˇˇó33ÃÃÃÃò33ÃÃôôô33ÃÃffö33ÃÃ33õ33ÃÃú33ôôˇˇù33ôôÃÃû33ôôôôü33ôôff†33ôô33°33ôô¢33ffˇˇ£33ffÃç33ffôô•33ffff¶33ff33ß33ff®3333ˇˇ©3333ÃÙ3333ôô´3333ff¨333333≠3333Æ33ˇˇØ33ÃÃ∞33ôô±33ff≤3333≥33¥ˇˇˇˇµˇˇÃÃ∂ˇˇôô∑ˇˇff∏ˇˇ33πˇˇ∫ÃÃˇˇªÃÃÃúÃÃôôΩÃÃffæÃÃ33øÃÿôôˇˇ¡ôôÃìôôôô√ôôffƒôô33≈ôôΔffˇˇ«ffÃûffôô…ffff ff33ÀffÃ33ˇˇÕ33ÃÃŒ33ôôœ33ff–3333—33“ˇˇ”ÃÑôô’ff÷33◊ÿˇˇˇŸ˘`˘`˘`⁄Ú–Ú–Ú–€Ï@Ï@Ï@‹Â∞Â∞Â∞›fl fl fl fiÿêÿêÿêfl“““‡ÀpÀpÀp·ƒ‡ƒ‡ƒ‡‚æPæPæP„∑¿∑¿∑¿‰±0±0±0™†™†™†Ê§§§ÁùÄùÄùÄËñññÈê`ê`ê`Íâ–â–â–ÎÉ@É@É@Ï|∞|∞|∞Ìv v v ÓoêoêoêÔiiibpbpbpÒ[‡[‡[‡ÚUPUPUPÛN¿N¿N¿ÙH0H0H0ıA†A†A†ˆ;;;˜4Ä4Ä4į---˘'`'`'`˙ – – –˚@@@¸∞∞∞˝
  7678.  
  7679.  
  7680.  ˛êêê@ªíq“,'ÅÅfiˇÅÚˇ˘ÅÅfiˇÅÚˇ˘ÅÅfiˇÅÚˇ˘ÅÅfiˇÅÚˇ˘ ÅÅfiŎˇ˘ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈òź@ĪHHQo< ∑IJˇˇˇˇˇˇˇˇˇˇÃÃˇˇˇˇôôˇˇˇˇffˇˇˇˇ33ˇˇˇˇˇˇÃÃˇˇˇˇÃÃÃÃˇˇÃÃôô    ˇˇÃÃff
  7681. ˇˇÃÃ33 ˇˇÃà ˇˇôôˇˇ
  7682. ˇˇôôÃÃˇˇôôôôˇˇôôffˇˇôô33ˇˇôôˇˇffˇˇˇˇffÃÃˇˇffôôˇˇffffˇˇff33ˇˇffˇˇ33ˇˇˇˇ33ÃÃˇˇ33ôôˇˇ33ffˇˇ3333ˇˇ33ˇˇˇˇˇˇÃàˇˇôô!ˇˇff"ˇˇ33#ˇˇ$ÃÃˇˇˇˇ%ÃÃˇˇÃÃ&ÃÃˇˇôô'ÃÃˇˇff(ÃÃˇˇ33)ÃÃˇˇ*ÃÃÃÃˇˇ+ÃÃÃÃÃÃ,ÃÃÃÃôô-ÃÃÃÃff.ÃÃÃÃ33/ÃÃÃÃ0ÃÃôôˇˇ1ÃÃôôÃÃ2ÃÃôôôô3ÃÃôôff4ÃÃôô335ÃÃôô6ÃÃffˇˇ7ÃÃffÃÃ8ÃÃffôô9ÃÃffff:ÃÃff33;ÃÃff<ÃÃ33ˇˇ=ÃÃ33ÃÃ>ÃÃ33ôô?ÃÃ33ff@ÃÃ3333AÃÃ33BÃÃˇˇCÃÃÃÃDÃÃôôEÃÃffFÃÃ33GÃÃHôôˇˇˇˇIôôˇˇÃÃJôôˇˇôôKôôˇˇffLôôˇˇ33MôôˇˇNôôÃÃˇˇOôôÃÃÃÃPôôÃÃôôQôôÃÃffRôôÃÃ33SôôÃÃTôôôôˇˇUôôôôÃÃVôôôôôôWôôôôffXôôôô33YôôôôZôôffˇˇ[ôôffÃÃ\ôôffôô]ôôffff^ôôff33_ôôff`ôô33ˇˇaôô33ÃÃbôô33ôôcôô33ffdôô3333eôô33fôôˇˇgôôÃÃhôôôôiôôffjôô33kôôlffˇˇˇˇmffˇˇÃÃnffˇˇôôoffˇˇffpffˇˇ33qffˇˇrffÃÃˇˇsffÃÃÃÃtffÃÃôôuffÃÃffvffÃÃ33wffÃÃxffôôˇˇyffôôÃÃzffôôôô{ffôôff|ffôô33}ffôô~ffffˇˇffffÃÃÄffffôôÅffffffÇffff33ÉffffÑff33ˇˇÖff33ÃÃÜff33ôôáff33ffàff3333âff33äffˇˇãffÃÃåffôôçfffféff33èffê33ˇˇˇˇë33ˇˇÃÃí33ˇˇôôì33ˇˇffî33ˇˇ33ï33ˇˇñ33ÃÃˇˇó33ÃÃÃÃò33ÃÃôôô33ÃÃffö33ÃÃ33õ33ÃÃú33ôôˇˇù33ôôÃÃû33ôôôôü33ôôff†33ôô33°33ôô¢33ffˇˇ£33ffÃç33ffôô•33ffff¶33ff33ß33ff®3333ˇˇ©3333ÃÙ3333ôô´3333ff¨333333≠3333Æ33ˇˇØ33ÃÃ∞33ôô±33ff≤3333≥33¥ˇˇˇˇµˇˇÃÃ∂ˇˇôô∑ˇˇff∏ˇˇ33πˇˇ∫ÃÃˇˇªÃÃÃúÃÃôôΩÃÃffæÃÃ33øÃÿôôˇˇ¡ôôÃìôôôô√ôôffƒôô33≈ôôΔffˇˇ«ffÃûffôô…ffff ff33ÀffÃ33ˇˇÕ33ÃÃŒ33ôôœ33ff–3333—33“ˇˇ”ÃÑôô’ff÷33◊ÿˇˇˇŸ˘`˘`˘`⁄Ú–Ú–Ú–€Ï@Ï@Ï@‹Â∞Â∞Â∞›fl fl fl fiÿêÿêÿêfl“““‡ÀpÀpÀp·ƒ‡ƒ‡ƒ‡‚æPæPæP„∑¿∑¿∑¿‰±0±0±0™†™†™†Ê§§§ÁùÄùÄùÄËñññÈê`ê`ê`Íâ–â–â–ÎÉ@É@É@Ï|∞|∞|∞Ìv v v ÓoêoêoêÔiiibpbpbpÒ[‡[‡[‡ÚUPUPUPÛN¿N¿N¿ÙH0H0H0ıA†A†A†ˆ;;;˜4Ä4Ä4į---˘'`'`'`˙ – – –˚@@@¸∞∞∞˝
  7683.  
  7684.  
  7685.  ˛êêê@Ī“q,'ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈òÅºÄÆªHHQoD ∏IJˇˇˇˇˇˇˇˇˇˇÃÃˇˇˇˇôôˇˇˇˇffˇˇˇˇ33ˇˇˇˇˇˇÃÃˇˇˇˇÃÃÃÃˇˇÃÃôô    ˇˇÃÃff
  7686. ˇˇÃÃ33 ˇˇÃà ˇˇôôˇˇ
  7687. ˇˇôôÃÃˇˇôôôôˇˇôôffˇˇôô33ˇˇôôˇˇffˇˇˇˇffÃÃˇˇffôôˇˇffffˇˇff33ˇˇffˇˇ33ˇˇˇˇ33ÃÃˇˇ33ôôˇˇ33ffˇˇ3333ˇˇ33ˇˇˇˇˇˇÃàˇˇôô!ˇˇff"ˇˇ33#ˇˇ$ÃÃˇˇˇˇ%ÃÃˇˇÃÃ&ÃÃˇˇôô'ÃÃˇˇff(ÃÃˇˇ33)ÃÃˇˇ*ÃÃÃÃˇˇ+ÃÃÃÃÃÃ,ÃÃÃÃôô-ÃÃÃÃff.ÃÃÃÃ33/ÃÃÃÃ0ÃÃôôˇˇ1ÃÃôôÃÃ2ÃÃôôôô3ÃÃôôff4ÃÃôô335ÃÃôô6ÃÃffˇˇ7ÃÃffÃÃ8ÃÃffôô9ÃÃffff:ÃÃff33;ÃÃff<ÃÃ33ˇˇ=ÃÃ33ÃÃ>ÃÃ33ôô?ÃÃ33ff@ÃÃ3333AÃÃ33BÃÃˇˇCÃÃÃÃDÃÃôôEÃÃffFÃÃ33GÃÃHôôˇˇˇˇIôôˇˇÃÃJôôˇˇôôKôôˇˇffLôôˇˇ33MôôˇˇNôôÃÃˇˇOôôÃÃÃÃPôôÃÃôôQôôÃÃffRôôÃÃ33SôôÃÃTôôôôˇˇUôôôôÃÃVôôôôôôWôôôôffXôôôô33YôôôôZôôffˇˇ[ôôffÃÃ\ôôffôô]ôôffff^ôôff33_ôôff`ôô33ˇˇaôô33ÃÃbôô33ôôcôô33ffdôô3333eôô33fôôˇˇgôôÃÃhôôôôiôôffjôô33kôôlffˇˇˇˇmffˇˇÃÃnffˇˇôôoffˇˇffpffˇˇ33qffˇˇrffÃÃˇˇsffÃÃÃÃtffÃÃôôuffÃÃffvffÃÃ33wffÃÃxffôôˇˇyffôôÃÃzffôôôô{ffôôff|ffôô33}ffôô~ffffˇˇffffÃÃÄffffôôÅffffffÇffff33ÉffffÑff33ˇˇÖff33ÃÃÜff33ôôáff33ffàff3333âff33äffˇˇãffÃÃåffôôçfffféff33èffê33ˇˇˇˇë33ˇˇÃÃí33ˇˇôôì33ˇˇffî33ˇˇ33ï33ˇˇñ33ÃÃˇˇó33ÃÃÃÃò33ÃÃôôô33ÃÃffö33ÃÃ33õ33ÃÃú33ôôˇˇù33ôôÃÃû33ôôôôü33ôôff†33ôô33°33ôô¢33ffˇˇ£33ffÃç33ffôô•33ffff¶33ff33ß33ff®3333ˇˇ©3333ÃÙ3333ôô´3333ff¨333333≠3333Æ33ˇˇØ33ÃÃ∞33ôô±33ff≤3333≥33¥ˇˇˇˇµˇˇÃÃ∂ˇˇôô∑ˇˇff∏ˇˇ33πˇˇ∫ÃÃˇˇªÃÃÃúÃÃôôΩÃÃffæÃÃ33øÃÿôôˇˇ¡ôôÃìôôôô√ôôffƒôô33≈ôôΔffˇˇ«ffÃûffôô…ffff ff33ÀffÃ33ˇˇÕ33ÃÃŒ33ôôœ33ff–3333—33“ˇˇ”ÃÑôô’ff÷33◊ÿˇˇˇŸ˘`˘`˘`⁄Ú–Ú–Ú–€Ï@Ï@Ï@‹Â∞Â∞Â∞›fl fl fl fiÿêÿêÿêfl“““‡ÀpÀpÀp·ƒ‡ƒ‡ƒ‡‚æPæPæP„∑¿∑¿∑¿‰±0±0±0™†™†™†Ê§§§ÁùÄùÄùÄËñññÈê`ê`ê`Íâ–â–â–ÎÉ@É@É@Ï|∞|∞|∞Ìv v v ÓoêoêoêÔiiibpbpbpÒ[‡[‡[‡ÚUPUPUPÛN¿N¿N¿ÙH0H0H0ıA†A†A†ˆ;;;˜4Ä4Ä4į---˘'`'`'`˙ – – –˚@@@¸∞∞∞˝
  7688.  
  7689.  
  7690.  ˛êêêÄÆªq@,'ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈†è†É†ø
  7691. d,     Helvetica
  7692.     .°dONLNd|Sá{(£qFigure 3°dONLNd    àSìJ* :Processing an Application’s Request for Component Services°dONLNdD¶ñ±á+C1Autoregistration versus application registration.°dONLNdu¶á±ä)Ò , Palatino
  7693. °dONLNdv•ä± )There are two ways that you°dONLNdí±ñΩ (Ÿ¥Scan register a component. By far the easiest way is to build a standalone component°dONLNdÊΩñ…* Pfile of type 'thng'. At system startup, the Component Manager will automatically°dONLNd7…ñ’ * Uregister any component that it finds in files of type 'thng' in the System Folder and°dONLNdç’ñ·* Tin the Extensions folder (in System 7) and its subfolders. The 'thng' component file°dONLNd‚·ñÌ* Smust contain both your component and the corresponding component ('thng') resource.°dONLNd6Ìñ˘* SThe definition of this resource can be found in the Components.h header file and is°dONLNdä˘ñ”* shown below.,
  7694. Courier
  7695.     °dONLNdóñÊ*typedef struct {°dONLNd©§)Í+ unsigned long °dONLNd∏˚))Wtype;°dONLNd¿D)û)I /* 4-byte code */°dONLNd‘*§5¬(Q¬short °dONLNdfi*˚5
  7696. )Wid;°dONLNd‚6ñA·(]¥} ResourceSpec; xBx/,Times
  7697. ({% 
  7698. +
  7699. 14
  7700. +md)e)v)e)l)o)p)  
  7701. )
  7702. December 1992ˇ†æ°¿9pse
  7703. currentpoint
  7704. /picTop exch def
  7705. /picLeft exch def
  7706. psb
  7707. †ø†æ°¿=pse
  7708. currentpoint
  7709. /picBottom exch def
  7710. /picRight exch def
  7711. psb
  7712. †ø†æ°¿[ -350 -87 93 268]
  7713. °¿€1 dict begin /s exch def
  7714. picLeft picTop translate
  7715. picRight picLeft sub s 2 get s 0 get sub div
  7716. picBottom picTop sub s 1 get s 3 get sub div
  7717. scale
  7718. s 0 get neg s 3 get neg translate
  7719. end
  7720. /showpage {} def
  7721. /copypage {} def
  7722. °¿ %!PS-Adobe-3.0 EPSF-3.0
  7723. %%Creator: Adobe Illustrator(TM) 3.2
  7724. %%For: (Diane Wilcox) (Apple Computer, Inc.)
  7725. %%Title: (Woodcock Fig_03MSW)
  7726. %%CreationDate: (10/2/92) (1:29 PM)
  7727. %%BoundingBox: -350 -87 93 268
  7728. %%DocumentProcessColors: Magenta Black
  7729. %%DocumentFonts: Helvetica
  7730. %%+ Helvetica-Bold
  7731. %%DocumentSuppliedResources: procset Adobe_packedarray 2.0 0
  7732. %%+ procset Adobe_cmykcolor 1.1 0
  7733. %%+ procset Adobe_cshow 1.1 0
  7734. %%+ procset Adobe_customcolor 1.0 0
  7735. %%+ procset Adobe_typography_AI3 1.0 1
  7736. %%+ procset Adobe_IllustratorA_AI3 1.0 1
  7737. %AI3_ColorUsage: Color
  7738. %AI3_TemplateBox: -174 41 -174 41
  7739. %AI3_TileBox: -450 -324 102 406
  7740. %AI3_DocumentPreview: Macintosh_ColorPic
  7741. %%EndComments
  7742. %%BeginProlog
  7743. %%BeginResource: procset Adobe_packedarray 2.0 0
  7744. %%Title: (Packed Array Operators)
  7745. %%Version: 2.0 
  7746. %%CreationDate: (8/2/90) ()
  7747. %%Copyright: ((C) 1987-1990 Adobe Systems Incorporated All Rights Reserved)
  7748. userdict /Adobe_packedarray 5 dict dup begin put
  7749. /initialize            % - initialize -
  7750. {
  7751. /packedarray where
  7752.     {
  7753.     pop
  7754.     }
  7755.     {
  7756.     Adobe_packedarray begin
  7757.     Adobe_packedarray
  7758.         {
  7759.         dup xcheck
  7760.             {
  7761.             bind
  7762.             } if
  7763.         userdict 3 1 roll put
  7764.         } forall
  7765.     end
  7766.     } ifelse
  7767. } def
  7768. /terminate            % - terminate -
  7769. {
  7770. } def
  7771. /packedarray        % arguments count packedarray array
  7772. {
  7773. array astore readonly
  7774. } def
  7775. /setpacking            % boolean setpacking -
  7776. {
  7777. pop
  7778. } def
  7779. /currentpacking        % - setpacking boolean
  7780. {
  7781. false
  7782. } def
  7783. currentdict readonly pop end
  7784. %%EndResource
  7785. Adobe_packedarray /initialize get exec
  7786. %%BeginResource: procset Adobe_cmykcolor 1.1 0
  7787. %%Title: (CMYK Color Operators)
  7788. %%Version: 1.1 
  7789. %%CreationDate: (1/23/89) ()
  7790. %%Copyright: ((C) 1987-1990 Adobe Systems Incorporated All Rights Reserved)
  7791. currentpacking true setpacking
  7792. userdict /Adobe_cmykcolor 4 dict dup begin put
  7793. /initialize            % - initialize -
  7794. {
  7795. /setcmykcolor where
  7796.     {
  7797.     pop
  7798.     }
  7799.     {
  7800.     userdict /Adobe_cmykcolor_vars 2 dict dup begin put
  7801.     /_setrgbcolor
  7802.         /setrgbcolor load def
  7803.     /_currentrgbcolor
  7804.         /currentrgbcolor load def
  7805.     Adobe_cmykcolor begin
  7806.     Adobe_cmykcolor
  7807.         {
  7808.         dup xcheck
  7809.             {
  7810.             bind
  7811.             } if
  7812.         pop pop
  7813.         } forall
  7814.     end
  7815.     end
  7816.     Adobe_cmykcolor begin
  7817.     } ifelse
  7818. } def
  7819. /terminate            % - terminate -
  7820. {
  7821. currentdict Adobe_cmykcolor eq
  7822.     {
  7823.     end
  7824.     } if
  7825. } def
  7826. /setcmykcolor        % cyan magenta yellow black setcmykcolor -
  7827. {
  7828. 1 sub 4 1 roll
  7829. 3
  7830.     {
  7831.     3 index add neg dup 0 lt
  7832.         {
  7833.         pop 0
  7834.         } if
  7835.     3 1 roll
  7836.     } repeat
  7837. Adobe_cmykcolor_vars /_setrgbcolor get exec
  7838. pop
  7839. } def 
  7840. /currentcmykcolor    % - currentcmykcolor cyan magenta yellow black
  7841. {
  7842. Adobe_cmykcolor_vars /_currentrgbcolor get exec
  7843. 3
  7844.     {
  7845.     1 sub neg 3 1 roll
  7846.     } repeat
  7847. 0
  7848. } def
  7849. currentdict readonly pop end
  7850. setpacking
  7851. %%EndResource
  7852. %%BeginResource: procset Adobe_cshow 1.1 0
  7853. %%Title: (cshow Operator)
  7854. %%Version: 1.1 
  7855. %%CreationDate: (1/23/89) ()
  7856. %%Copyright: ((C) 1987-1990 Adobe Systems Incorporated All Rights Reserved)
  7857. currentpacking true setpacking
  7858. userdict /Adobe_cshow 3 dict dup begin put
  7859. /initialize            % - initialize -
  7860. {
  7861. /cshow where
  7862.     {
  7863.     pop
  7864.     }
  7865.     {
  7866.     userdict /Adobe_cshow_vars 1 dict dup begin put
  7867.     /_cshow        % - _cshow proc
  7868.         {} def
  7869.     Adobe_cshow begin
  7870.     Adobe_cshow
  7871.         {
  7872.         dup xcheck
  7873.             {
  7874.             bind
  7875.             } if
  7876.         userdict 3 1 roll put
  7877.         } forall
  7878.     end
  7879.     end
  7880.     } ifelse
  7881. } def
  7882. /terminate            % - terminate -
  7883. {
  7884. } def
  7885. /cshow                % proc string cshow -
  7886. {
  7887. exch
  7888. Adobe_cshow_vars
  7889.     exch /_cshow
  7890.     exch put
  7891.     {
  7892.     0 0 Adobe_cshow_vars /_cshow get exec
  7893.     } forall
  7894. } def
  7895. currentdict readonly pop end
  7896. setpacking
  7897. %%EndResource
  7898. %%BeginResource: procset Adobe_customcolor 1.0 0
  7899. %%Title: (Custom Color Operators)
  7900. %%Version: 1.0 
  7901. %%CreationDate: (5/9/88) ()
  7902. %%Copyright: ((C) 1987-1990 Adobe Systems Incorporated All Rights Reserved)
  7903. currentpacking true setpacking
  7904. userdict /Adobe_customcolor 5 dict dup begin put
  7905. /initialize            % - initialize -
  7906. {
  7907. /setcustomcolor where
  7908.     {
  7909.     pop
  7910.     }
  7911.     {
  7912.     Adobe_customcolor begin
  7913.     Adobe_customcolor
  7914.         {
  7915.         dup xcheck
  7916.             {
  7917.             bind
  7918.             } if
  7919.         pop pop
  7920.         } forall
  7921.     end
  7922.     Adobe_customcolor begin
  7923.     } ifelse
  7924. } def
  7925. /terminate            % - terminate -
  7926. {
  7927. currentdict Adobe_customcolor eq
  7928.     {
  7929.     end
  7930.     } if
  7931. } def
  7932. /findcmykcustomcolor    % cyan magenta yellow black name findcmykcustomcolor object
  7933. {
  7934. 5 packedarray
  7935. }  def
  7936. /setcustomcolor        % object tint setcustomcolor -
  7937. {
  7938. exch
  7939. aload pop pop
  7940. 4
  7941.     {
  7942.     4 index mul 4 1 roll
  7943.     } repeat
  7944. 5 -1 roll pop
  7945. setcmykcolor
  7946. } def
  7947. /setoverprint        % boolean setoverprint -
  7948. {
  7949. pop
  7950. } def
  7951. currentdict readonly pop end
  7952. setpacking
  7953. %%EndResource
  7954. %%BeginResource: procset Adobe_typography_AI3 1.1 0
  7955. %%Title: (Typography Operators)
  7956. %%Version: 1.0 
  7957. %%CreationDate:(5/31/90) ()
  7958. %%Copyright: ((C) 1987-1990 Adobe Systems Incorporated All Rights Reserved)
  7959. currentpacking true setpacking
  7960. userdict /Adobe_typography_AI3 47 dict dup begin put
  7961. /initialize            % - initialize -
  7962. {
  7963. /TZ
  7964.  where
  7965.     {
  7966.     pop
  7967.     }
  7968.     {
  7969.     Adobe_typography_AI3 begin
  7970.     Adobe_typography_AI3
  7971.         {
  7972.         dup xcheck
  7973.             {
  7974.             bind
  7975.             } if
  7976.         pop pop
  7977.         } forall
  7978.     end
  7979.     Adobe_typography_AI3 begin
  7980.     } ifelse
  7981. } def
  7982. /terminate            % - terminate -
  7983. {
  7984. currentdict Adobe_typography_AI3 eq
  7985.     {
  7986.     end
  7987.     } if
  7988. } def
  7989. % [ number value stream [ array for encoding modification ] modifyEncoding ==> [ modified array ]
  7990. /modifyEncoding
  7991. {
  7992.     /_tempEncode exch ddef
  7993.     
  7994.     % pointer for sequential encodings
  7995.     /_pntr 0 ddef
  7996.     
  7997.     {
  7998.         % get bottom object
  7999.         counttomark -1 roll
  8000.         % is it a mark ?
  8001.         dup type dup /marktype eq         
  8002.         {
  8003.             % exit
  8004.             pop pop exit
  8005.         }
  8006.         {
  8007.             % ... object ... type ....
  8008.             % insert if a nametype
  8009.             /nametype eq
  8010.             {
  8011.                 % insert the name at _pntr and increment pointer
  8012.                 _tempEncode /_pntr dup load dup 3 1 roll 1 add ddef 3 -1 roll
  8013.                 put
  8014.             }
  8015.             {
  8016.                 % reset _pntr if it's a number
  8017.                 /_pntr exch ddef                    
  8018.             }
  8019.             ifelse
  8020.         }
  8021.         ifelse
  8022.     }
  8023.     loop    
  8024.     
  8025.     % return the modified encoding
  8026.     _tempEncode
  8027. }
  8028. def
  8029. /TE    % Set std platform encoding     % (encoding pairs) TE -
  8030. {
  8031.     StandardEncoding 256 array copy modifyEncoding 
  8032.     /_nativeEncoding exch def
  8033. } def
  8034. % re-define font
  8035. % expected arguments
  8036. % for 'normal fonts : 
  8037. % [ /_Helvetica-Bold/Helvetica-Bold direction fontScript defaultEncoding TZ
  8038. %
  8039. % for cartographic, pictographic, and expert fonts :
  8040. % [ ... number value stream ... /_Symbol/Symbol 
  8041. %    direction fontScript defaultEncoding TZ
  8042. % for blended fonts w/ default encoding :
  8043. % [ /_AdobeSans_20ULig1XCond-Bold/AdobeSans 
  8044. %    direction fontScript defaultEncoding [ w0 w1 ... wn ] TZ
  8045. % for blended fonts w/ special encoding :
  8046. % [ ... number value stream ... /_AdobeSans_20ULig1XCond/AdobeSans 
  8047. %    direction fontScript defaultEncoding [ w0 w1 ... wn ] TZ
  8048. /TZ        
  8049. {
  8050.     % set weight vector (if present)
  8051.     dup type /arraytype eq {/_wv exch def} {/_wv 0 def} ifelse 
  8052.     % platform dependent coding flag
  8053.     /_useNativeEncoding exch def
  8054.     % pop fontScript & direction
  8055.     pop pop
  8056.     
  8057.     % create a new dictionary with length
  8058.     % equal to original dictionary length + 2
  8059.     % copy all the key/value pairs except FID
  8060.     % call makeblended font with the weight values if _wv is an array
  8061.     findfont _wv type /arraytype eq {_wv makeblendedfont} if dup length 2 add dict
  8062.     
  8063.     begin
  8064.     
  8065.         % copy all the values but the FID
  8066.         % into the new dictionary
  8067.         mark exch
  8068.         {
  8069.             1 index /FID ne { def } if cleartomark mark
  8070.         }
  8071.         forall
  8072.         % discard last mark
  8073.         pop
  8074.         
  8075.         % define FontName
  8076.         /FontName exch def
  8077.         
  8078.         % if no re-encoding stream is present
  8079.         % then if the base encoding vector of the font
  8080.         % is the same as StandardEncoding
  8081.         % and the use platform encoding flag is true
  8082.         % then install AI platform encoding
  8083.         % else leave the base encoding in effect
  8084.         counttomark 0 eq
  8085.         {
  8086.             1 _useNativeEncoding eq
  8087.             {
  8088.                 /Encoding _nativeEncoding def
  8089.             }
  8090.             if
  8091.             % clean up
  8092.             cleartomark
  8093.         }
  8094.         {    
  8095.             % custom encoding to be done
  8096.             % start off with a copy of the font's standard encoding
  8097.             /Encoding load 256 array copy 
  8098.             modifyEncoding /Encoding exch def
  8099.         }
  8100.         ifelse        
  8101.         FontName currentdict
  8102.     end
  8103.     
  8104.     % register the new font
  8105.     definefont pop
  8106. }
  8107. def
  8108. % text painting operators
  8109. /tr                    % string tr ax ay string 
  8110. {
  8111. _ax _ay 3 2 roll
  8112. } def
  8113. /trj                % string trj cx cy fillchar ax ay string 
  8114. {
  8115. _cx _cy _sp _ax _ay 6 5 roll
  8116. } def
  8117. /a0
  8118. {
  8119. /Tx    % text                            % textString Tx -
  8120.     {
  8121.     dup 
  8122.     currentpoint 3 2 roll
  8123.     tr _psf
  8124.     newpath moveto
  8125.     tr _ctm _pss
  8126.     } ddef
  8127. /Tj    % justified text                % textString Tj -
  8128.     {
  8129.     dup
  8130.     currentpoint 3 2 roll
  8131.     trj _pjsf
  8132.     newpath moveto
  8133.     trj _ctm _pjss
  8134.     } ddef
  8135.     
  8136. } def
  8137. /a1
  8138. {
  8139. /Tx    % text                            % textString Tx -
  8140.     {
  8141.     dup currentpoint 4 2 roll gsave
  8142.     dup currentpoint 3 2 roll
  8143.     tr _psf
  8144.     newp°¿ ath moveto
  8145.     tr _ctm _pss
  8146.     grestore 3 1 roll moveto tr sp
  8147.     } ddef
  8148. /Tj    % justified text                % textString Tj -
  8149.     {
  8150.     dup currentpoint 4 2 roll gsave
  8151.     dup currentpoint 3 2 roll
  8152.     trj _pjsf
  8153.     newpath moveto
  8154.     trj _ctm _pjss
  8155.     grestore 3 1 roll moveto tr sp
  8156.     } ddef
  8157.     
  8158. } def
  8159. /e0
  8160. {
  8161. /Tx    % text                            % textString Tx -
  8162.     {
  8163.     tr _psf
  8164.     } ddef
  8165. /Tj    % justified text                % textString Tj -
  8166.     {
  8167.     trj _pjsf
  8168.     } ddef
  8169. } def
  8170. /e1
  8171. {
  8172. /Tx    % text                            % textString Tx -
  8173.     {
  8174.     dup currentpoint 4 2 roll gsave 
  8175.     tr _psf  
  8176.     grestore 3 1 roll moveto tr sp 
  8177.     } ddef
  8178. /Tj    % justified text                % textString Tj -
  8179.     {
  8180.     dup currentpoint 4 2 roll gsave 
  8181.     trj _pjsf
  8182.     grestore 3 1 roll moveto tr sp 
  8183.     } ddef
  8184. } def
  8185. /i0
  8186. {
  8187. /Tx    % text                            % textString Tx -
  8188.     {
  8189.     tr sp
  8190.     } ddef
  8191. /Tj    % justified text                % textString Tj -
  8192.     {
  8193.     trj jsp
  8194.     } ddef
  8195. } def
  8196. /i1
  8197. {
  8198. W N
  8199. } def
  8200. /o0
  8201. {
  8202. /Tx    % text                            % textString Tx -
  8203.     {
  8204.     tr sw rmoveto
  8205.     } ddef
  8206. /Tj    % justified text                % textString Tj -
  8207.     {
  8208.     trj swj rmoveto
  8209.     } ddef
  8210. } def
  8211. /r0
  8212. {
  8213. /Tx    % text                            % textString Tx -
  8214.     {
  8215.     tr _ctm _pss
  8216.     } ddef
  8217. /Tj    % justified text                % textString Tj -
  8218.     {
  8219.     trj _ctm _pjss
  8220.     } ddef
  8221. } def
  8222. /r1
  8223. {
  8224. /Tx    % text                            % textString Tx -
  8225.     {
  8226.     dup currentpoint 4 2 roll currentpoint gsave newpath moveto
  8227.     tr _ctm _pss 
  8228.     grestore 3 1 roll moveto tr sp 
  8229.     } ddef
  8230. /Tj    % justified text                % textString Tj -
  8231.     {
  8232.     dup currentpoint 4 2 roll currentpoint gsave newpath moveto
  8233.     trj _ctm _pjss
  8234.     grestore 3 1 roll moveto tr sp 
  8235.     } ddef
  8236. } def
  8237. % font operators
  8238. % Binding
  8239. /To    % begin text                     % bindType To -
  8240. {
  8241.     pop _ctm currentmatrix pop
  8242. } def
  8243. /TO    % end text                    % TO -
  8244. {
  8245.     Te _ctm setmatrix newpath
  8246. } def
  8247. % Text paths
  8248. /Tp    % begin text path                % a b c d tx ty startPt Tp -
  8249. {
  8250.     pop _tm astore pop _ctm setmatrix 
  8251.     _tDict begin /W {} def /h {} def
  8252. } def
  8253. /TP    % end text path                    % TP -
  8254. {
  8255.     end
  8256.     iTm 0 0 moveto
  8257. } def
  8258. % Render mode & matrix operators
  8259. /Tr    % begin render                    % render Tr - 
  8260. {
  8261.     _render 3 le {currentpoint newpath moveto} if
  8262.     dup 8 eq {pop 0} {dup 9 eq {pop 1} if} ifelse
  8263.     dup /_render exch ddef
  8264.     _renderStart exch get load exec
  8265. } def
  8266. /iTm % internal set text matrix        % - iTm -    (uses _tm as implicit argument)
  8267. {
  8268. _ctm setmatrix _tm concat 0 _rise translate _hs 1 scale
  8269. } def
  8270. /Tm % set text matrix                % a b c d tx ty Tm -
  8271. {
  8272. _tm astore pop iTm 0 0 moveto
  8273. } def
  8274. /Td % translate text matrix         % tx ty Td -
  8275. {
  8276. _mtx translate _tm _tm concatmatrix pop iTm 0 0 moveto
  8277. } def
  8278. /Te    % end render                    % - Te -
  8279. {
  8280.     _render -1 eq {} {_renderEnd _render get dup null ne {load exec} {pop} ifelse} ifelse
  8281.     /_render -1 ddef
  8282. } def
  8283. % Attributes
  8284. /Ta    % set alignment                    % alignment Ta -
  8285. {
  8286. pop
  8287. } def
  8288. /Tf    % set font name and size        % fontname size Tf -
  8289. {
  8290. dup 1000 div /_fScl exch ddef
  8291. exch findfont exch scalefont setfont
  8292. } def
  8293. /Tl    % set leading                    % leading paragraphLeading Tl -
  8294. {
  8295. pop
  8296. 0 exch _leading astore pop
  8297. } def
  8298. /Tt    % set user tracking                % userTracking Tt -
  8299. {
  8300. pop
  8301. } def
  8302. /TW % set word spacing                % minSpace optSpace maxSpace TW -
  8303. {
  8304. 3 npop
  8305. } def
  8306. /Tw    % set computed word spacing        % wordSpace Tw
  8307. {
  8308. /_cx exch ddef
  8309. } def
  8310. /TC % set character spacing            % minSpace optSpace maxSpace TC -
  8311. {
  8312. 3 npop
  8313. } def
  8314. /Tc    % set computed char spacing     % charSpace Tc -
  8315. {
  8316. /_ax exch ddef
  8317. } def
  8318. /Ts % set super/subscripting (rise)    % rise Ts -
  8319. {
  8320. /_rise exch ddef
  8321. currentpoint
  8322. iTm
  8323. moveto
  8324. } def
  8325. /Ti    % set indentation                % firstStartIndent otherStartIndent stopIndent Ti -
  8326. {
  8327. 3 npop
  8328. } def
  8329. /Tz % set horizontal scaling        % scalePercent Tz -
  8330. {
  8331. 100 div /_hs exch ddef
  8332. iTm
  8333. } def
  8334. /TA % set pairwise kerning            % autoKern TA -
  8335.                                     %    autoKern = 0 -> no pair kerning
  8336.                                     %             = 1 -> automatic pair kerning
  8337. {
  8338. pop
  8339. } def
  8340. /Tq % set hanging quotes            % hangingQuotes Tq -
  8341.                                     %    hangingQuotes     = 0 -> no hanging quotes
  8342.                                     %                     = 1 -> hanging quotes
  8343. {
  8344. pop
  8345. } def
  8346. % Text Bodies
  8347. /TX {pop} def
  8348. %/Tx    % non-justified text            % textString Tx -
  8349. %/Tj    % justified text                % textString Tj -
  8350. /Tk    % kern                            % autoKern kernValue Tk -
  8351.                                     %      autoKern = 0 -> manual kern, = 1 -> auto kern
  8352.                                     %    kernValue = kern value in em/1000 space
  8353. {
  8354. exch pop _fScl mul neg 0 rmoveto
  8355. } def
  8356. /TK    % non-printing kern                % autoKern kernValue TK -
  8357. {
  8358. 2 npop
  8359. } def
  8360. /T* % carriage return & line feed    % - T* -
  8361. {
  8362. _leading aload pop neg Td
  8363. } def
  8364. /T*- % carriage return & negative line feed    % - T*- -
  8365. {
  8366. _leading aload pop Td
  8367. } def
  8368. /T-    % print a discretionary hyphen    % - T- -
  8369. {
  8370. _hyphen Tx
  8371. } def
  8372. /T+    % discretionary hyphen hyphen    % - T+ -
  8373. {} def
  8374. /TR    % reset pattern matrix             % a b c d tx ty TR -
  8375. {
  8376. _ctm currentmatrix pop     
  8377. _tm astore pop 
  8378. iTm 0 0 moveto 
  8379. } def
  8380. /TS    % special chars                    % textString justified TS -
  8381. {
  8382. 0 eq {Tx} {Tj} ifelse
  8383. } def
  8384. currentdict readonly pop end
  8385. setpacking
  8386. %%EndResource
  8387. %%BeginResource: procset Adobe_IllustratorA_AI3 1.0 2
  8388. %%Title: (Adobe Illustrator (R) Version 3.0 Abbreviated Prolog)
  8389. %%Version: 1.0 
  8390. %%CreationDate: (7/22/89) ()
  8391. %%Copyright: ((C) 1987-1990 Adobe Systems Incorporated All Rights Reserved)
  8392. currentpacking true setpacking
  8393. userdict /Adobe_IllustratorA_AI3 61 dict dup begin put
  8394. % initialization
  8395. /initialize                % - initialize -
  8396. {
  8397. % 47 vars, but leave slack of 10 entries for custom Postscript fragments
  8398. userdict /Adobe_IllustratorA_AI3_vars 57 dict dup begin put
  8399. % paint operands
  8400. /_lp /none def
  8401. /_pf {} def
  8402. /_ps {} def
  8403. /_psf {} def
  8404. /_pss {} def
  8405. /_pjsf {} def
  8406. /_pjss {} def
  8407. /_pola 0 def
  8408. /_doClip 0 def
  8409. % paint operators
  8410. /cf    currentflat def    % - cf flatness
  8411. % typography operands
  8412. /_tm matrix def
  8413. /_renderStart [/e0 /r0 /a0 /o0 /e1 /r1 /a1 /i0] def 
  8414. /_renderEnd [null null null null /i1 /i1 /i1 /i1] def
  8415. /_render -1 def
  8416. /_rise 0 def
  8417. /_ax 0 def            % x character spacing    (_ax, _ay, _cx, _cy follows awidthshow naming convention)
  8418. /_ay 0 def            % y character spacing
  8419. /_cx 0 def            % x word spacing
  8420. /_cy 0 def            % y word spacing
  8421. /_leading [0 0] def
  8422. /_ctm matrix def
  8423. /_mtx matrix def
  8424. /_sp 16#020 def
  8425. /_hyphen (-) def
  8426. /_fScl 0 def
  8427. /_cnt 0 def
  8428. /_hs 1 def
  8429. /_nativeEncoding 0 def
  8430. /_useNativeEncoding 0 def
  8431. /_tempEncode 0 def
  8432. /_pntr 0 def
  8433. /_tDict 2 dict def
  8434. % typography operators
  8435. /Tx {} def
  8436. /Tj {} def
  8437. % compound path operators
  8438. /CRender {} def
  8439. % printing
  8440. /_AI3_savepage {} def
  8441. % color operands
  8442. /_gf null def
  8443. /_cf 4 array def
  8444. /_if null def
  8445. /_of false def
  8446. /_fc {} def
  8447. /_gs null def
  8448. /_cs 4 array def
  8449. /_is null def
  8450. /_os false def
  8451. /_sc {} def
  8452. /_i null def
  8453. Adobe_IllustratorA_AI3 begin
  8454. Adobe_IllustratorA_AI3
  8455.     {
  8456.     dup xcheck
  8457.         {
  8458.         bind
  8459.         } if
  8460.     pop pop
  8461.     } forall
  8462. end
  8463. end
  8464. Adobe_IllustratorA_AI3 begin
  8465. Adobe_IllustratorA_AI3_vars begin
  8466. newpath
  8467. } def
  8468. /terminate                % - terminate -
  8469. {
  8470. end
  8471. end
  8472. } def
  8473. % definition operators
  8474. /_                    % - _ null
  8475. null def
  8476. /ddef                % key value ddef -
  8477. {
  8478. Adobe_IllustratorA_AI3_vars 3 1 roll put
  8479. } def
  8480. /xput                % key value literal xput -
  8481. {
  8482. dup load dup length exch maxlength eq
  8483.     {
  8484.     dup dup load dup
  8485.     length 2 mul dict copy def
  8486.     } if
  8487. load begin def end
  8488. } def
  8489. /npop                % integer npop -
  8490. {
  8491.     {
  8492.     pop
  8493.     } repeat
  8494. } def
  8495. % marking operators
  8496. /sw                    % ax ay string sw x y 
  8497. {
  8498. dup length exch stringwidth
  8499. exch 5 -1 roll 3 index 1 sub mul add
  8500. 4 1 roll 3 1 roll 1 sub mul add
  8501. } def
  8502. /swj                % cx cy fillchar ax ay string swj x y
  8503. {
  8504. dup 4 1 roll
  8505. dup length exch stringwidth 
  8506. exch 5 -1 roll 3 index 1 sub mul add
  8507. 4 1 roll 3 1 roll 1 sub mul add 
  8508. 6 2 roll /_cnt 0 ddef
  8509. {1 index eq {/_cnt _cnt 1 add ddef} if} forall pop
  8510. exch _cnt mul exch _cnt mul 2 index add 4 1 roll 2 index add 4 1 roll pop pop
  8511. } def
  8512. /ss                    % ax ay string matrix ss -
  8513. {
  8514. 4 1 roll
  8515.     {                % matrix ax ay char 0 0 {proc} -
  8516.     2 npop 
  8517.     (0) exch 2 copy 0 exch put pop
  8518.     gsave
  8519.     false charpath currentpoint
  8520.     4 index setmatrix
  8521.     stroke
  8522.     grestore
  8523.     moveto
  8524.     2 copy rmoveto
  8525.     } exch cshow
  8526. 3 npop
  8527. } def
  8528. /jss                % cx cy fillchar ax ay string matrix jss -
  8529. {
  8530. 4 1 roll
  8531.     {                % cx cy fillchar matrix ax ay char 0 0 {proc} -   
  8532.     2 npop 
  8533.     (0) exch 2 copy 0 exch put 
  8534.     gsave
  8535.     _sp eq 
  8536.         {
  8537.         exch 6 index 6 index 6 index 5 -1 roll widthshow  
  8538.         currentpoint
  8539.         }
  8540.         {
  8541.         false charpath currentpoint
  8542.         4 index setmatrix stroke
  8543.         }ifelse
  8544.     grestore
  8545.     moveto
  8546.     2 copy rmoveto
  8547.     } exch cshow
  8548. 6 npop
  8549. } def
  8550. % path operators
  8551. /sp                    % ax ay string sp -
  8552. {
  8553.     {
  8554.     2 npop (0) exch
  8555.     2 copy 0 exch put pop
  8556.     false charpath
  8557.     2 copy rmoveto
  8558.     } exch cshow
  8559. 2 npop
  8560. } def
  8561. /jsp                    % cx cy fillchar ax ay string jsp -
  8562. {
  8563.     {                    % cx cy fillchar ax ay char 0 0 {proc} -
  8564.     2 npop 
  8565.     (0) exch 2 copy 0 exch put 
  8566.     _sp eq 
  8567.         {
  8568.         exch 5 index 5 index 5 index 5 -1 roll wid°¿ thshow  
  8569.         }
  8570.         {
  8571.         false charpath
  8572.         }ifelse
  8573.     2 copy rmoveto
  8574.     } exch cshow
  8575. 5 npop
  8576. } def
  8577. % path construction operators
  8578. /pl                % x y pl x y
  8579. {
  8580. transform
  8581. 0.25 sub round 0.25 add exch
  8582. 0.25 sub round 0.25 add exch
  8583. itransform
  8584. } def
  8585. /setstrokeadjust where
  8586.     {
  8587.     pop true setstrokeadjust
  8588.     /c                % x1 y1 x2 y2 x3 y3 c -
  8589.     {
  8590.     curveto
  8591.     } def
  8592.     /C
  8593.     /c load def
  8594.     /v                % x2 y2 x3 y3 v -
  8595.     {
  8596.     currentpoint 6 2 roll curveto
  8597.     } def
  8598.     /V
  8599.     /v load def
  8600.     /y                % x1 y1 x2 y2 y -
  8601.     {
  8602.     2 copy curveto
  8603.     } def
  8604.     /Y
  8605.     /y load def
  8606.     /l                % x y l -
  8607.     {
  8608.     lineto
  8609.     } def
  8610.     /L
  8611.     /l load def
  8612.     /m                % x y m -
  8613.     {
  8614.     moveto
  8615.     } def
  8616.     }
  8617.     {%else
  8618.     /c
  8619.     {
  8620.     pl curveto
  8621.     } def
  8622.     /C
  8623.     /c load def
  8624.     /v
  8625.     {
  8626.     currentpoint 6 2 roll pl curveto
  8627.     } def
  8628.     /V
  8629.     /v load def
  8630.     /y
  8631.     {
  8632.     pl 2 copy curveto
  8633.     } def
  8634.     /Y
  8635.     /y load def
  8636.     /l
  8637.     {
  8638.     pl lineto
  8639.     } def
  8640.     /L
  8641.     /l load def
  8642.     /m
  8643.     {
  8644.     pl moveto
  8645.     } def
  8646.     }ifelse
  8647. % graphic state operators
  8648. /d                    % array phase d -
  8649. {
  8650. setdash
  8651. } def
  8652. /cf    {} def            % - cf flatness
  8653. /i                    % flatness i -
  8654. {
  8655. dup 0 eq
  8656.     {
  8657.     pop cf
  8658.     } if
  8659. setflat
  8660. } def
  8661. /j                    % linejoin j -
  8662. {
  8663. setlinejoin
  8664. } def
  8665. /J                    % linecap J -
  8666. {
  8667. setlinecap
  8668. } def
  8669. /M                    % miterlimit M -
  8670. {
  8671. setmiterlimit
  8672. } def
  8673. /w                    % linewidth w -
  8674. {
  8675. setlinewidth
  8676. } def
  8677. % path painting operators
  8678. /H                    % - H -
  8679. {} def
  8680. /h                    % - h -
  8681. {
  8682. closepath
  8683. } def
  8684. /N                    % - N -
  8685. {
  8686. _pola 0 eq 
  8687.     {
  8688.     _doClip 1 eq {clip /_doClip 0 ddef} if 
  8689.     newpath
  8690.     } 
  8691.     {
  8692.     /CRender {N} ddef
  8693.     }ifelse
  8694. } def
  8695. /n                    % - n -
  8696. {N} def
  8697. /F                    % - F -
  8698. {
  8699. _pola 0 eq 
  8700.     {
  8701.     _doClip 1 eq 
  8702.         {
  8703.         gsave _pf grestore clip newpath /_lp /none ddef _fc 
  8704.         /_doClip 0 ddef
  8705.         }
  8706.         {
  8707.         _pf
  8708.         }ifelse
  8709.     } 
  8710.     {
  8711.     /CRender {F} ddef
  8712.     }ifelse
  8713. } def
  8714. /f                    % - f -
  8715. {
  8716. closepath
  8717. F
  8718. } def
  8719. /S                    % - S -
  8720. {
  8721. _pola 0 eq 
  8722.     {
  8723.     _doClip 1 eq 
  8724.         {
  8725.         gsave _ps grestore clip newpath /_lp /none ddef _sc 
  8726.         /_doClip 0 ddef
  8727.         }
  8728.         {
  8729.         _ps
  8730.         }ifelse
  8731.     } 
  8732.     {
  8733.     /CRender {S} ddef
  8734.     }ifelse
  8735. } def
  8736. /s                    % - s -
  8737. {
  8738. closepath
  8739. S
  8740. } def
  8741. /B                    % - B -
  8742. {
  8743. _pola 0 eq 
  8744.     {
  8745.     _doClip 1 eq     % F clears _doClip
  8746.     gsave F grestore 
  8747.         {
  8748.         gsave S grestore clip newpath /_lp /none ddef _sc
  8749.         /_doClip 0 ddef
  8750.         } 
  8751.         {
  8752.         S
  8753.         }ifelse
  8754.     }
  8755.     {
  8756.     /CRender {B} ddef
  8757.     }ifelse
  8758. } def
  8759. /b                    % - b -
  8760. {
  8761. closepath
  8762. B
  8763. } def
  8764. /W                    % - W -
  8765. {
  8766. /_doClip 1 ddef
  8767. } def
  8768. /*                    % - [string] * -
  8769. {
  8770. count 0 ne 
  8771.     {
  8772.     dup type (stringtype) eq {pop} if
  8773.     } if 
  8774. _pola 0 eq {newpath} if
  8775. } def
  8776. % group operators
  8777. /u                    % - u -
  8778. {} def
  8779. /U                    % - U -
  8780. {} def
  8781. /q                    % - q -
  8782. {
  8783. _pola 0 eq {gsave} if
  8784. } def
  8785. /Q                    % - Q -
  8786. {
  8787. _pola 0 eq {grestore} if
  8788. } def
  8789. /*u                    % - *u -
  8790. {
  8791. _pola 1 add /_pola exch ddef
  8792. } def
  8793. /*U                    % - *U -
  8794. {
  8795. _pola 1 sub /_pola exch ddef 
  8796. _pola 0 eq {CRender} if
  8797. } def
  8798. /D                    % polarized D -
  8799. {pop} def
  8800. /*w                    % - *w -
  8801. {} def
  8802. /*W                    % - *W -
  8803. {} def
  8804. % place operators
  8805. /`                    % matrix llx lly urx ury string ` -
  8806. {
  8807. /_i save ddef
  8808. 6 1 roll 4 npop
  8809. concat pop
  8810. userdict begin
  8811. /showpage {} def
  8812. 0 setgray
  8813. 0 setlinecap
  8814. 1 setlinewidth
  8815. 0 setlinejoin
  8816. 10 setmiterlimit
  8817. [] 0 setdash
  8818. newpath
  8819. 0 setgray
  8820. false setoverprint
  8821. } def
  8822. /~                    % - ~ -
  8823. {
  8824. end
  8825. _i restore
  8826. } def
  8827. % color operators
  8828. /O                    % flag O -
  8829. {
  8830. 0 ne
  8831. /_of exch ddef
  8832. /_lp /none ddef
  8833. } def
  8834. /R                    % flag R -
  8835. {
  8836. 0 ne
  8837. /_os exch ddef
  8838. /_lp /none ddef
  8839. } def
  8840. /g                    % gray g -
  8841. {
  8842. /_gf exch ddef
  8843. /_fc
  8844. _lp /fill ne
  8845.     {
  8846.     _of setoverprint
  8847.     _gf setgray
  8848.     /_lp /fill ddef
  8849.     } if
  8850. } ddef
  8851. /_pf
  8852. {
  8853. _fc
  8854. fill
  8855. } ddef
  8856. /_psf
  8857. {
  8858. _fc
  8859. ashow
  8860. } ddef
  8861. /_pjsf
  8862. {
  8863. _fc
  8864. awidthshow
  8865. } ddef
  8866. /_lp /none ddef
  8867. } def
  8868. /G                    % gray G -
  8869. {
  8870. /_gs exch ddef
  8871. /_sc
  8872. {
  8873. _lp /stroke ne
  8874.     {
  8875.     _os setoverprint
  8876.     _gs setgray
  8877.     /_lp /stroke ddef
  8878.     } if
  8879. } ddef
  8880. /_ps
  8881. {
  8882. _sc
  8883. stroke
  8884. } ddef
  8885. /_pss
  8886. {
  8887. _sc
  8888. ss
  8889. } ddef
  8890. /_pjss
  8891. {
  8892. _sc
  8893. jss
  8894. } ddef
  8895. /_lp /none ddef
  8896. } def
  8897. /k                    % cyan magenta yellow black k -
  8898. {
  8899. _cf astore pop
  8900. /_fc
  8901. {
  8902. _lp /fill ne
  8903.     {
  8904.     _of setoverprint
  8905.     _cf aload pop setcmykcolor
  8906.     /_lp /fill ddef
  8907.     } if
  8908. } ddef
  8909. /_pf
  8910. {
  8911. _fc
  8912. fill
  8913. } ddef
  8914. /_psf
  8915. {
  8916. _fc
  8917. ashow
  8918. } ddef
  8919. /_pjsf
  8920. {
  8921. _fc
  8922. awidthshow
  8923. } ddef
  8924. /_lp /none ddef
  8925. } def
  8926. /K                    % cyan magenta yellow black K -
  8927. {
  8928. _cs astore pop
  8929. /_sc
  8930. {
  8931. _lp /stroke ne
  8932.     {
  8933.     _os setoverprint
  8934.     _cs aload pop setcmykcolor
  8935.     /_lp /stroke ddef
  8936.     } if
  8937. } ddef
  8938. /_ps
  8939. {
  8940. _sc
  8941. stroke
  8942. } ddef
  8943. /_pss
  8944. {
  8945. _sc
  8946. ss
  8947. } ddef
  8948. /_pjss
  8949. {
  8950. _sc
  8951. jss
  8952. } ddef
  8953. /_lp /none ddef
  8954. } def
  8955. /x                    % cyan magenta yellow black name gray x -
  8956. {
  8957. /_gf exch ddef
  8958. findcmykcustomcolor
  8959. /_if exch ddef
  8960. /_fc
  8961. _lp /fill ne
  8962.     {
  8963.     _of setoverprint
  8964.     _if _gf 1 exch sub setcustomcolor
  8965.     /_lp /fill ddef
  8966.     } if
  8967. } ddef
  8968. /_pf
  8969. {
  8970. _fc
  8971. fill
  8972. } ddef
  8973. /_psf
  8974. {
  8975. _fc
  8976. ashow
  8977. } ddef
  8978. /_pjsf
  8979. {
  8980. _fc
  8981. awidthshow
  8982. } ddef
  8983. /_lp /none ddef
  8984. } def
  8985. /X                    % cyan magenta yellow black name gray X -
  8986. {
  8987. /_gs exch ddef
  8988. findcmykcustomcolor
  8989. /_is exch ddef
  8990. /_sc
  8991. {
  8992. _lp /stroke ne
  8993.     {
  8994.     _os setoverprint
  8995.     _is _gs 1 exch sub setcustomcolor
  8996.     /_lp /stroke ddef
  8997.     } if
  8998. } ddef
  8999. /_ps
  9000. {
  9001. _sc
  9002. stroke
  9003. } ddef
  9004. /_pss
  9005. {
  9006. _sc
  9007. ss
  9008. } ddef
  9009. /_pjss
  9010. {
  9011. _sc
  9012. jss
  9013. } ddef
  9014. /_lp /none ddef
  9015. } def
  9016. % locked object operator
  9017. /A                    % value A -
  9018. {
  9019. pop
  9020. } def
  9021. currentdict readonly pop end
  9022. setpacking
  9023. % annotate page operator
  9024. /annotatepage
  9025. {
  9026. } def
  9027. %%EndResource
  9028. %%EndProlog
  9029. %%BeginSetup
  9030. %%IncludeFont: Helvetica
  9031. %%IncludeFont: Helvetica-Bold
  9032. Adobe_cmykcolor /initialize get exec
  9033. Adobe_cshow /initialize get exec
  9034. Adobe_customcolor /initialize get exec
  9035. Adobe_typography_AI3 /initialize get exec
  9036. Adobe_IllustratorA_AI3 /initialize get exec
  9037. [
  9038. 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis
  9039. /Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute
  9040. /egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde
  9041. /oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex
  9042. /udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls
  9043. /registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash
  9044. /.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef
  9045. /.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash
  9046. /questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef
  9047. /guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe
  9048. /endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide
  9049. /.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright
  9050. /fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand
  9051. /Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex
  9052. /Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex
  9053. /Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla
  9054. /hungarumlaut/ogonek/caron
  9055. TE
  9056. %AI3_BeginEncoding: _Helvetica Helvetica
  9057. [/_Helvetica/Helvetica 0 0 1 TZ
  9058. %AI3_EndEncoding TrueType
  9059. %AI3_BeginEncoding: _Helvetica-Bold Helvetica-Bold
  9060. [/_Helvetica-Bold/Helvetica-Bold 0 0 1 TZ
  9061. %AI3_EndEncoding TrueType
  9062. %%EndSetup
  9063. 0 A
  9064. u
  9065. 0 O
  9066. 0 g
  9067. 0 i 0 J 0 j 1 w 4 M []0 d
  9068. %AI3_Note:
  9069. 0 D
  9070. 50.75 17.75 m
  9071. 50.75 44.75 L
  9072. -21.25 44.75 L
  9073. -21.25 17.75 L
  9074. 50.75 17.75 L
  9075. f
  9076. U
  9077. u
  9078. 50.75 -18.25 m
  9079. 50.75 8.75 L
  9080. -21.25 8.75 L
  9081. -21.25 -18.25 L
  9082. 50.75 -18.25 L
  9083. f
  9084. U
  9085. u
  9086. 50.75 -67.75 m
  9087. 50.75 -40.75 L
  9088. -21.25 -40.75 L
  9089. -21.25 -67.75 L
  9090. 50.75 -67.75 L
  9091. f
  9092. U
  9093. u
  9094. u
  9095. 49.75 104.375 m
  9096. 49.75 181.7625 L
  9097. -22.25 181.7625 L
  9098. -22.25 104.375 L
  9099. 49.75 104.375 L
  9100. f
  9101. U
  9102. u
  9103. 0 0.1 0 0 k
  9104. 0 R
  9105. 0 G
  9106. 0.75 w
  9107. 47.5 106.625 m
  9108. 47.5 184.0125 L
  9109. -24.5 184.0125 L
  9110. -24.5 106.625 L
  9111. 47.5 106.625 L
  9112. b
  9113. U
  9114. U
  9115. u
  9116. 1 R
  9117. 48.5 20 m
  9118. 48.5 47 L
  9119. -23.5 47 L
  9120. -23.5 20 L
  9121. 48.5 20 L
  9122. b
  9123. U
  9124. u
  9125. 48.5 -16 m
  9126. 48.5 11 L
  9127. -23.5 11 L
  9128. -23.5 -16 L
  9129. 48.5 -16 L
  9130. b
  9131. U
  9132. u
  9133. 48.5 -65.5 m
  9134. 48.5 -38.5 L
  9135. -23.5 -38.5 L
  9136. -23.5 -65.5 L
  9137. 48.5 -65.5 L
  9138. b
  9139. U
  9140. u
  9141. u
  9142. 1 g
  9143. 0 R
  9144. 1 w
  9145. -41.6251 240.0595 m
  9146. -38.6253 240.0984 -23.2874 240.0595 y
  9147. -20.8311 240.3782 -20.8311 237.1532 v
  9148. -20.8311 233.9282 -20.8311 230.1969 y
  9149. -19.7718 231.2563 l
  9150. -18.6374 232.7469 -18.7874 229.8969 v
  9151. -18.7874 221.7968 l
  9152. -18.9374 220.5218 -19.8374 221.4968 v
  9153. -20.8124 222.3968 l
  9154. -20.8124 215.8717 l
  9155. -20.6624 213.0217 -23.2124 213.0217 v
  9156. -25.7624 213.0217 -41.5876 213.0217 y
  9157. -44.0626 212.2717 -44.0626 215.7967 v
  9158. -44.0626 219.9218 -44.0626 220.9718 y
  9159. -43.1626 220.4468 l
  9160. -41.5876 219.3218 -41.6626 221.6468 v
  9161. -41.7472 224.2705 -41.6626 231.2469 y
  9162. -41.7376 233.0469 -42.9376 232.1469 v
  9163. -44.1376 231.2469 -44.0626 231.3219 y
  9164. -44.0626 237.1719 l
  9165. -44.5126 240.022 -41.6251 240.0595 v
  9166. b
  9167. U
  9168. U
  9169. u
  9170. 0 To
  9171. 1 0 0 1 -29.2314 247.9482 0 Tp
  9172. TP
  9173. -20.6719 0 Td
  9174. 0 Tr
  9175. 0 g
  9176. /_Helvetica 8 Tf
  9177. 0 Ts
  9178. 100 Tz
  9179. 0 Tt
  9180. 0 TA
  9181. 0 0 5 TC
  9182. 100 100 200 TW
  9183. 0 0 0 Ti
  9184. 1 Ta
  9185. 0 Tq
  9186. 9 0 Tl
  9187. 0 Tc
  9188. 0 Tw
  9189. (Component) Tx
  9190. (\r) TX 
  9191. 20.6719 -9 Td
  9192. (\r) TX 
  9193. TO
  9194. U
  9195. u
  9196. u
  9197. -129.25 104.5125 m
  9198. -129.25 181.55 L
  9199. -201.25 181.55 L
  9200. -201.25 104.5125 L
  9201. -129.25 104.5125 L
  9202. f
  9203. U
  9204. u
  9205. 0 0.1 0 0 k
  9206. 1 R
  9207. 0 G
  9208. 0.75 w
  9209. -131.5 106.7625 m
  9210. -131.5 183°¿Î.8 L
  9211. -203.5 183.8 L
  9212. -203.5 106.7625 L
  9213. -131.5 106.7625 L
  9214. b
  9215. U
  9216. u
  9217. 1 g
  9218. 1 w
  9219. -153.5779 141.0595 m
  9220. -153.5389 138.0597 -153.5779 122.7218 y
  9221. -153.2591 120.2656 -156.4841 120.2656 v
  9222. -159.7092 120.2656 -163.4405 120.2656 y
  9223. -162.381 119.2062 l
  9224. -160.8904 118.0718 -163.7405 118.2218 v
  9225. -171.8405 118.2218 l
  9226. -173.1156 118.3718 -172.1405 119.2718 v
  9227. -171.2405 120.2468 l
  9228. -177.7656 120.2468 l
  9229. -180.6156 120.0968 -180.6156 122.6468 v
  9230. -180.6156 125.1968 -180.6156 141.022 y
  9231. -181.3656 143.497 -177.8406 143.497 v
  9232. -173.7156 143.497 -172.6656 143.497 y
  9233. -173.1905 142.597 l
  9234. -174.3156 141.022 -171.9905 141.097 v
  9235. -169.3668 141.1816 -162.3904 141.097 y
  9236. -160.5904 141.172 -161.4904 142.372 v
  9237. -162.3904 143.572 -162.3154 143.497 y
  9238. -156.4654 143.497 l
  9239. -153.6154 143.947 -153.5779 141.0595 v
  9240. b
  9241. 0 g
  9242. -173.5374 137.0845 m
  9243. -175.4874 133.1844 l
  9244. -175.4874 128.9844 l
  9245. -173.3874 124.6343 l
  9246. -169.5624 122.3843 l
  9247. -165.8873 122.0843 l
  9248. -162.8873 123.8843 l
  9249. -161.5373 122.5343 l
  9250. -158.0873 122.5343 l
  9251. -157.7873 125.0843 l
  9252. -159.7373 127.1844 l
  9253. -158.6873 129.5844 l
  9254. -158.9123 132.8094 l
  9255. -160.7873 135.7345 l
  9256. -163.3373 137.9845 l
  9257. -166.1873 139.1845 l
  9258. -169.9374 139.1845 l
  9259. -173.5374 137.0845 l
  9260. f
  9261. 1 g
  9262. -168.7374 135.8845 m
  9263. -171.7374 133.9344 l
  9264. -172.2624 130.4844 l
  9265. -170.9874 127.1844 l
  9266. -167.3874 125.1594 l
  9267. -163.6373 126.8844 l
  9268. -161.9123 130.3344 l
  9269. -162.8123 134.0094 l
  9270. -165.4373 135.5844 l
  9271. -168.7374 135.8845 l
  9272. f
  9273. 0 g
  9274. -169.0374 130.7844 m
  9275. -168.8874 128.2344 -166.0373 129.7344 v
  9276. -160.9373 135.1345 l
  9277. -160.4123 138.8845 -162.9623 137.4595 v
  9278. -163.0373 136.4845 -161.9873 135.5844 v
  9279. -163.0373 134.3844 l
  9280. -164.3873 135.4345 l
  9281. -167.3874 132.2844 l
  9282. -165.8873 131.3844 -166.9373 130.4844 v
  9283. -167.0874 129.6594 -169.0374 130.7844 v
  9284. f
  9285. 1 g
  9286. -163.1873 137.6845 m
  9287. -163.7123 135.8095 -164.3873 135.4345 v
  9288. -163.0373 134.3844 l
  9289. -161.9873 135.5844 l
  9290. -163.1873 136.4095 -162.9623 137.4595 v
  9291. -162.7373 138.5095 -163.1873 137.6845 y
  9292. f
  9293. U
  9294. u
  9295. 0 To
  9296. 1 0 0 1 -167.2314 163.9482 0 Tp
  9297. TP
  9298. -20.6719 0 Td
  9299. 0 Tr
  9300. 1 O
  9301. 0 g
  9302. (Component) Tx
  9303. (\r) TX 
  9304. 4.8916 -9 Td
  9305. (Manager) Tx 
  9306. (\r) TX 
  9307. TO
  9308. U
  9309. U
  9310. u
  9311. 0 O
  9312. -273.25 104.5125 m
  9313. -273.25 181.55 L
  9314. -345.25 181.55 L
  9315. -345.25 104.5125 L
  9316. -273.25 104.5125 L
  9317. f
  9318. 0 0.1 0 0 k
  9319. 1 R
  9320. 0 G
  9321. 0.75 w
  9322. -275.5 106.7625 m
  9323. -275.5 183.8 L
  9324. -347.5 183.8 L
  9325. -347.5 106.7625 L
  9326. -275.5 106.7625 L
  9327. b
  9328. 0 To
  9329. 1 0 0 1 -312.7314 163.9482 0 Tp
  9330. TP
  9331. -19.5605 0 Td
  9332. 0 Tr
  9333. 1 O
  9334. 0 g
  9335. 1 w
  9336. 8 0 Tl
  9337. (Application) Tx 
  9338. (\r) TX 
  9339. TO
  9340. 0 O
  9341. 1 g
  9342. 1 R
  9343. 0 G
  9344. 2 j
  9345. -312.8125 146.9812 m
  9346. -297.3125 131.4812 l
  9347. -312.5 116.2937 l
  9348. -328.5625 132.3562 l
  9349. -312.8125 146.9812 l
  9350. b
  9351. -313.1875 130.2312 m
  9352. -311.625 131.9187 l
  9353. -310.625 133.1687 -309.5 133.0437 v
  9354. -308.375 132.9187 -305.6875 132.9812 y
  9355. -300.5 127.8562 l
  9356. -300.0625 121.7312 l
  9357. -303.125 123.5437 l
  9358. -307.3125 123.6062 l
  9359. -309.4132 123.8753 -310.375 124.3562 v
  9360. -311.625 124.9812 -313.1875 126.4187 y
  9361. -313.7634 127.3745 -314 128.7937 v
  9362. -314.0625 129.1687 -312.9375 129.2312 -312.375 128.6687 c
  9363. -312.0563 128.35 -310.8125 126.6687 y
  9364. -309.25 126.7312 l
  9365. -307.8125 127.9812 l
  9366. -308.3125 129.1062 l
  9367. -309.6875 131.2312 -310.9375 129.8562 v
  9368. -311.8776 128.8221 -313.4375 129.4812 -313.1875 130.2312 c
  9369. b
  9370. 1 O
  9371. 0 g
  9372. 0 j
  9373. -300.5 128.5437 m
  9374. -297.5625 128.2312 l
  9375. -297.5625 120.4812 l
  9376. -299.8125 120.4812 l
  9377. -302.1875 122.9812 l
  9378. -299.625 120.6062 -300.5 128.5437 v
  9379. f
  9380. -304.0625 128.6062 m
  9381. -304.0625 127.5437 l
  9382. -311.3125 127.5437 l
  9383. -312.375 128.6687 l
  9384. -304.0625 128.6062 l
  9385. f
  9386. -314 128.7937 m
  9387. -316.9375 128.7937 l
  9388. -317.375 127.6062 -316.5 127.6062 v
  9389. -315.625 127.6062 -313.75 127.6062 y
  9390. -314 128.7937 l
  9391. f
  9392. 0 O
  9393. 1 g
  9394. 0 R
  9395. 0 G
  9396. 0.5 w
  9397. -311.5 143.2 m
  9398. B
  9399. U
  9400. 0 To
  9401. 1 0 0 1 -265.5 234.0107 0 Tp
  9402. TP
  9403. 0 Tr
  9404. 0 g
  9405. 1 w
  9406. 0 Ta
  9407. 9 0 Tl
  9408. (Application calls) Tx
  9409. (\r) TX 
  9410. T*
  9411. (component function.) Tx 
  9412. (\r) TX 
  9413. TO
  9414. 0 To
  9415. 1 0 0 1 -170.4521 233.9482 0 Tp
  9416. TP
  9417. 0 Tr
  9418. (Component Manager sends ) Tx
  9419. (\r) TX 
  9420. T*
  9421. (request code corresponding ) Tx
  9422. (\r) TX 
  9423. T*
  9424. (to desired component ) Tx
  9425. (\r) TX 
  9426. T*
  9427. (function along with function ) Tx
  9428. (\r) TX 
  9429. T*
  9430. (parameters.  ) Tx 
  9431. (\r) TX 
  9432. TO
  9433. 0 To
  9434. 1 0 0 1 8.9561 233.9482 0 Tp
  9435. TP
  9436. 0 Tr
  9437. (Dispatcher decodes ) Tx
  9438. (\r) TX 
  9439. T*
  9440. (request code and ) Tx
  9441. (\r) TX 
  9442. T*
  9443. (calls appropriate ) Tx
  9444. (\r) TX 
  9445. T*
  9446. (component function) Tx
  9447. (\r) TX 
  9448. T*
  9449. (with parameters.) Tx 
  9450. (\r) TX 
  9451. TO
  9452. u
  9453. u
  9454. 0 R
  9455. 0 G
  9456. 0.75 w
  9457. -269.0389 149.5076 m
  9458. -212.7359 149.5076 l
  9459. S
  9460. U
  9461. 0 O
  9462. 0 g
  9463. 1 w
  9464. -214.3875 152.1031 m
  9465. -208.6124 149.5219 l
  9466. -214.3875 146.8969 l
  9467. -212.6375 149.4781 l
  9468. -214.3875 152.1031 l
  9469. f
  9470. U
  9471. 0 To
  9472. 1 0 0 1 -179.5664 41.9482 0 Tp
  9473. TP
  9474. 0 Tr
  9475. (Function result is returned) Tx
  9476. (\r) TX 
  9477. T*
  9478. (to dispatcher, then to) Tx
  9479. (\r) TX 
  9480. T*
  9481. (Component Manager,) Tx
  9482. (\r) TX 
  9483. T*
  9484. (and finally to application.) Tx 
  9485. (\r) TX 
  9486. TO
  9487. 0 R
  9488. 0 G
  9489. 85 -84 m
  9490. 85 265 L
  9491. -59 265 L
  9492. -59 -84 L
  9493. 85 -84 L
  9494. s
  9495. 1 To
  9496. 1 0 0 1 -50 75.3 0 Tp
  9497. 76 -75 m
  9498. 76 75.3 L
  9499. -50 75.3 L
  9500. -50 -75 L
  9501. 76 -75 L
  9502. s
  9503. TP
  9504. 0 -6.75 Td
  9505. 1 Tr
  9506. (\r) TX 
  9507. TO
  9508. u
  9509. 0 To
  9510. 1 0 0 1 12.2686 163.9482 0 Tp
  9511. TP
  9512. -20.6719 0 Td
  9513. 0 Tr
  9514. 1 O
  9515. 0 g
  9516. 1 Ta
  9517. (Component) Tx
  9518. (\r) TX 
  9519. 2.2236 -9 Td
  9520. (dispatcher) Tx 
  9521. (\r) TX 
  9522. TO
  9523. U
  9524. 0 To
  9525. 1 0 0 1 -41.5 63 0 Tp
  9526. TP
  9527. 0 Tr
  9528. 0 O
  9529. 0 Ta
  9530. (Component) Tx
  9531. (\r) TX 
  9532. T*
  9533. (functions) Tx 
  9534. (\r) TX 
  9535. TO
  9536. 0 To
  9537. 1 0 0 1 12.5176 30.4482 0 Tp
  9538. TP
  9539. -18.6719 0 Td
  9540. 0 Tr
  9541. 1 O
  9542. 1 Ta
  9543. (Function 1) Tx
  9544. (\r) TX 
  9545. 18.6719 -9 Td
  9546. (\r) TX 
  9547. T*
  9548. (\r) TX 
  9549. T*
  9550. (\r) TX 
  9551. -18.6719 -9 Td
  9552. (Function 2) Tx
  9553. (\r) TX 
  9554. 18.6719 -9 Td
  9555. (\r) TX 
  9556. -1.0496 -10 Td
  9557. /_Helvetica 6 Tf
  9558. 10 0 Tl
  9559. (\245) Tx 
  9560. 6 0 Tl
  9561. (\r) TX 
  9562. T*
  9563. (\245) Tx
  9564. (\r) TX 
  9565. T*
  9566. (\245) Tx
  9567. (\r) TX 
  9568. 1.0496 -9 Td
  9569. /_Helvetica 8 Tf
  9570. 9 0 Tl
  9571. (\r) TX 
  9572. -19.2718 -9 Td
  9573. (Function ) Tx 0 -150 Tk 
  9574. (n) Tx 
  9575. (\r) TX 
  9576. TO
  9577. 0 R
  9578. 0 G
  9579. 0.75 w
  9580. 57.7829 33.4289 m
  9581. 62.8713 33.4412 L
  9582. 65.2144 33.4412 67.114 35.3407 67.114 37.6838 C
  9583. 67.0551 136.25 L
  9584. 67.0551 138.5931 65.1556 140.4926 62.8125 140.4926 C
  9585. 53 140.5 l
  9586. S
  9587. 0 O
  9588. 0 g
  9589. 1 w
  9590. 59.5329 30.7547 m
  9591. 53.7578 33.3359 l
  9592. 59.5329 35.9609 l
  9593. 57.7829 33.3797 l
  9594. 59.5329 30.7547 l
  9595. f
  9596. u
  9597. 0 0.1 0 0 k
  9598. -260.2148 244.4745 m
  9599. -257.7155 244.4745 -255.6893 246.5007 -255.6893 249 c
  9600. -255.6893 251.4993 -257.7155 253.5255 -260.2148 253.5255 c
  9601. -262.7142 253.5255 -264.7403 251.4993 -264.7403 249 c
  9602. -264.7403 246.5007 -262.7142 244.4745 -260.2148 244.4745 c
  9603. f
  9604. 0 To
  9605. 0.8 0 0 0.8 -260.1562 246.5523 0 Tp
  9606. TP
  9607. -2.2236 0 Td
  9608. 0 Tr
  9609. 1 O
  9610. 0 g
  9611. /_Helvetica-Bold 8 Tf
  9612. 10 0 Tl
  9613. (1) Tx 
  9614. (\r) TX 
  9615. TO
  9616. U
  9617. u
  9618. 0 O
  9619. 0 0.1 0 0 k
  9620. -166.2148 244.9745 m
  9621. -163.7155 244.9745 -161.6893 247.0007 -161.6893 249.5 c
  9622. -161.6893 251.9993 -163.7155 254.0255 -166.2148 254.0255 c
  9623. -168.7142 254.0255 -170.7403 251.9993 -170.7403 249.5 c
  9624. -170.7403 247.0007 -168.7142 244.9745 -166.2148 244.9745 c
  9625. f
  9626. 0 To
  9627. 0.8 0 0 0.8 -166.1875 247.1086 0 Tp
  9628. TP
  9629. -2.2236 0 Td
  9630. 0 Tr
  9631. 1 O
  9632. 0 g
  9633. (2) Tx 
  9634. (\r) TX 
  9635. TO
  9636. U
  9637. u
  9638. 0 O
  9639. 0 0.1 0 0 k
  9640. 11.7852 244.9745 m
  9641. 14.2845 244.9745 16.3107 247.0007 16.3107 249.5 c
  9642. 16.3107 251.9993 14.2845 254.0255 11.7852 254.0255 c
  9643. 9.2858 254.0255 7.2597 251.9993 7.2597 249.5 c
  9644. 7.2597 247.0007 9.2858 244.9745 11.7852 244.9745 c
  9645. f
  9646. 0 To
  9647. 0.8 0 0 0.8 11.8125 247.1086 0 Tp
  9648. TP
  9649. -2.2236 0 Td
  9650. 0 Tr
  9651. 1 O
  9652. 0 g
  9653. (3) Tx 
  9654. (\r) TX 
  9655. TO
  9656. U
  9657. u
  9658. u
  9659. 0 O
  9660. 0 0.1 0 0 k
  9661. -175.7148 53.4745 m
  9662. -173.2155 53.4745 -171.1893 55.5007 -171.1893 58 c
  9663. -171.1893 60.4993 -173.2155 62.5255 -175.7148 62.5255 c
  9664. -178.2142 62.5255 -180.2403 60.4993 -180.2403 58 c
  9665. -180.2403 55.5007 -178.2142 53.4745 -175.7148 53.4745 c
  9666. f
  9667. 0 To
  9668. 0.8 0 0 0.8 -175.875 55.6086 0 Tp
  9669. TP
  9670. -2.2236 0 Td
  9671. 0 Tr
  9672. 1 O
  9673. 0 g
  9674. (4) Tx 
  9675. (\r) TX 
  9676. TO
  9677. U
  9678. U
  9679. u
  9680. u
  9681. 0 R
  9682. 0 G
  9683. 0.75 w
  9684. -124.7133 149.5076 m
  9685. -32.9102 149.5076 l
  9686. S
  9687. U
  9688. 0 O
  9689. 0 g
  9690. 1 w
  9691. -34.5619 152.1031 m
  9692. -28.7868 149.5219 l
  9693. -34.5619 146.8969 l
  9694. -32.8119 149.4781 l
  9695. -34.5619 152.1031 l
  9696. f
  9697. U
  9698. u
  9699. u
  9700. 0 R
  9701. 0 G
  9702. 0.75 w
  9703. -29.5367 141.4924 m
  9704. -121.3397 141.4924 l
  9705. S
  9706. U
  9707. 0 O
  9708. 0 g
  9709. 1 w
  9710. -119.6881 138.8969 m
  9711. -125.4632 141.4781 l
  9712. -119.6881 144.1031 l
  9713. -121.4381 141.5219 l
  9714. -119.6881 138.8969 l
  9715. f
  9716. U
  9717. u
  9718. u
  9719. 0 R
  9720. 0 G
  9721. 0.75 w
  9722. -208.2867 141.4924 m
  9723. -264.5897 141.4924 l
  9724. S
  9725. U
  9726. 0 O
  9727. 0 g
  9728. 1 w
  9729. -262.9381 138.8969 m
  9730. -268.7132 141.4781 l
  9731. -262.9381 144.1031 l
  9732. -264.6881 141.5219 l
  9733. -262.9381 138.8969 l
  9734. f
  9735. U
  9736. 0 R
  9737. 0 0.3 0 0 K
  9738. 0.4 w
  9739. -235 220 m
  9740. -235 155 l
  9741. S
  9742. -104.75 197.75 m
  9743. -104.75 154.25 l
  9744. S
  9745. 57.5 195.25 m
  9746. 57.5 144.75 l
  9747. S
  9748. -239 136 m
  9749. -182.25 63 l
  9750. S
  9751. 10 91 m
  9752. -167.25 59 l
  9753. S
  9754. -76 136 m
  9755. -168.75 63 l
  9756. S
  9757. u
  9758. u
  9759. 0 G
  9760. 0.75 w
  9761. 12.9924 46.7867 m
  9762. 12.9924 98.0898 l
  9763. S
  9764. U
  9765. 0 O
  9766. 0 g
  9767. 1 w
  9768. 10.3969 96.4381 m
  9769. 12.9781 102.2132 l
  9770. 15.6031 96.4381 l
  9771. 13.0219 98.1881 l
  9772. 10.3969 96.4381 l
  9773. f
  9774. U
  9775. %%PageTrailer
  9776. gsave annotatepage grestore showpage
  9777. %%Trailer
  9778. Adobe_IllustratorA_AI3 /terminate get exec
  9779. Adobe_typography_AI3 /terminate get exec
  9780. Adobe_customcolor /terminate get exec
  9781. Adobe_cshow /terminate get exec
  9782. Adobe_cmykcolor /terminate get exec
  9783. Adobe_packedarray /terminate get exec
  9784. %%EOF
  9785. —X◊#ˇ ˇˇˇˇ#◊ 
  9786. d,
  9787. Courier
  9788.     .°dONLNd%0h+6Ltypedef struct {°dONLNd1&<û+ ComponentDescription td;°dONLNd/1„<y)Ω /* Registration parameters */°dONLNdO=&Hb(dD ResourceSpec°dONLNd^=åHæ)f
  9789. component;°dONLNdk=„Hí)W# /* Resource where code is found */°dONLNdêI&Tb(pD ResourceSpec°dONLNdüIåT“)fcomponentName;°dONLNdÆI„Tj)W /* Name string resource */°dONLNdÀU&`b(|D ResourceSpec°dONLNd⁄Uå`“)fcomponentInfo;°dONLNdÈU„`j)W /* Info string resource */°dONLNda&lb(àD ResourceSpec°dONLNdaål“)fcomponentIcon;°dONLNd$a„lG)W /* Icon resource */°dONLNd9mx|(î6} ComponentResource;, Palatino
  9790. °dONLNdNÑêë*TFigure 4 shows the contents of the component resource that we’ll use for the example°dONLNd£êúJ*
  9791. component.
  9792. “65ë"“6°d
  9793. ONLNfH"5ë°d
  9794. ONLNfx^†Ç†é
  9795. 4—5“6ò,@[@[“6ë’’
  9796. Ò?˘ˇ‡Ô
  9797. Ò?˘ˇ‡Ô
  9798. Ò?˘ˇ¯Ô
  9799. Ò?˘ˇ¯Ô
  9800. Ò?˘ˇ¯Ô
  9801. Ò?˘ˇ¯Ô
  9802. Ò?˘ˇ¯Ôı?˘ˇ¯Ô˘Ã˚çΔÊHÊ?˘ˇ¯Ô˙    2™SI¢Eô?˘ˇ˚ˇ¯Ò˙    ™SO¢Eü?˘ˇ¯Ò˙    2™SH¢Eò?˘ˇ¯Ò˘Ã´çF¢BÊ?˘ˇ¯Ò¯˛Ä?˘ˇ¯Ò¯˛Ä?˘ˇ¯Ò Ò?˘ˇ¯Ò Ò?˘ˇ¯Ò Ò?˘ˇ¯Ò Ò?˘ˇ¯Ò Ò˘ˇ¯Ò Ò˘ˇ¯ÒÊÒÊÒÊÒÊÒÊÒÊÒ Ò?˘ˇ‡Ò Ò?˘ˇ‡Ò Ò?˘ˇ¯Ò Ò?˘ˇ¯Ò Ò?˘ˇ¯Ò Ò?˘ˇ¯Ò Ò?˘ˇ¯Ò˜8!?˘ˇ¯Ò˚
  9803. 3|„s;F∏HÊ?˘ˇ¯Ò˚
  9804. L‘î‘©b§Eô?˘ˇ¯Ò˚
  9805. D‘î◊©§Eü?˘ˇ¯Ò˚
  9806. L‘î‘)F§Eò?˘ˇ¯Ò˚
  9807. 3T„S);∏BÊ?˘ˇ¯Ò˘Ä˝Ä?˘ˇ¯Ò˘Ä˝Ä?˘ˇ¯Ò Ò?˘ˇ¯Ò Ò?˘ˇ¯Ò Ò?˘ˇ¯Ò Ò?˘ˇ¯Ò Ò˘ˇ¯Ò Ò˘ˇ¯ÒÊÒÊÒÊÒÊÒÊÒÊÒ Ò?˘ˇ‡Ò Ò?˘ˇ‡Ò Ò?˘ˇ¯Ò Ò?˘ˇ¯Ò Ò?˘ˇ¯Ò Ò?˘ˇ¯Ò Ò?˘ˇ¯Ò¯„@?˘ˇ¯Òò,@Ä[@Ä[6Rë#˝ æs9ù„gVfÈ≥?˘ˇ¯˝  P˝%˝ &jL™T„5R9iJ?˘ˇ¯ˇ¿7Œg3∞ÏçÆ÷p˛%˝ "jL´‘’’Rÿiz?˘ˇ¯MIïJë3)YP˛%˝ &jL™’ïRôiB?˘ˇ¯MIïzë>ë)YP˛%˝ ™s)î…urvy2?˘ˇ¯MIïBë0S)YP˛˚@¯?˘ˇ¯5Ne2êÏç.VP˛˚@¯?˘ˇ¯˝¸¸Ò?˘ˇ¯˝¸¸ Ò?˘ˇ¯Ò Ò?˘ˇ¯Ò Ò?˘ˇ¯Ò Ò˘ˇ¯Ò Ò˘ˇ¯ÒÊÒÊÒÊÒÊÒÊÒÊÒ Ò?˘ˇ‡Ò Ò?˘ˇ‡Ò Ò?˘ˇ¯Ò Ò?˘ˇ¯Ò Ò?˘ˇ¯Ò Ò?˘ˇ¯Ò Ò?˘ˇ¯Òı ‡?˘ˇ¯Ò˙    3Á7ö&r?˘ˇ¯Ò˙     §Õ&ä#î?˘ˇ¯Ò˙    J§Õ>ãÌí?˘ˇ¯Ò˙     §Õ"ä)ë?˘ˇ¯Ò˙    2ß5ä'r?˘ˇ¯Ò¯˝?˘ˇ¯Ò¯˝`?˘ˇ¯Ò Ò?˘ˇ¯Ò Ò?˘ˇ¯Ò Ò?˘ˇ¯Ò Ò?˘ˇ¯Ò Ò˘ˇ¯Ò Ò˘ˇ¯ÒÊÒÊÒÊÒÊÒÊÒÊÒ Ò?˘ˇ‡Ò Ò?˘ˇ‡Ò Ò?˘ˇ¯Ò Ò?˘ˇ¯Ò Ò?˘ˇ¯Ò Ò?˘ˇ¯Ò Ò?˘ˇ¯Ò˜_0?˘ˇ¯Ò¸ üq∏‹—3¶6&?˘ˇ¯Ò¸ &UJi4QΔ3F?˘ˇ˚ˇ¯Ò¸ "UJiÙ_l•]&?˘ˇ¯Ô¸ &UJiQLïY?˘ˇ¯Ô¸ ïq®‘Q;§ó%?˘ˇ¯Ô˙@˝Ä˛?˘ˇ¯Ô˙@˛˝?˘ˇ¯Ô
  9808. Ò?˘ˇ¯Ô
  9809. Ò?˘ˇ¯Ô
  9810. Ò?˘ˇ¯Ôò,Ä¿[Ä¿[R6íë
  9811. Ò?˘ˇ¯Ô
  9812. Ò˘ˇ¯Ô
  9813. Ò˘ˇ¯Ô’’’’’’
  9814. Ò?˘ˇ‡Ô
  9815. Ò?˘ˇ‡Ô
  9816. Ò?˘ˇ¯Ô
  9817. Ò?˘ˇ¯Ô
  9818. Ò?˘ˇ¯Ô
  9819. Ò?˘ˇ¯Ô
  9820. Ò?˘ˇ¯Ô˘Ä ?˘ˇ¯Ô˛
  9821. õÁ3ôÿ”4xÃhÊ?˘ˇ¯Ô˛
  9822. f§ •H¢N%2%ô?˘ˇ¯Ô˛
  9823. &§ ΩHí@Â%ü?˜ˇÒ˛
  9824. f§ °HäLe%ò?˘ˇ¯Ò˛
  9825. öß2ôHí3∏Ã"Ê?˘ˇ¯Ò¸¸ Ä?˘ˇ¯Ò¸¸ Ä?˘ˇ¯Ò Ò?˘ˇ¯Ò Ò?˘ˇ¯Ò Ò?˘ˇ¯Ò Ò?˘ˇ¯Ò Ò˘ˇ¯Ò Ò˘ˇ¯ÒÊ˝ ˚Ê7Œg3∞ÃÏ3#+3ˇÊˇÄMIïJë32$ƒ™LÄÊMIïzë>'§™GÄÊMIïBë30$™LˇÊ5Ne2êÃÏ##:3ˇÒ?˘ˇ‡˝ˆÒ?˘ˇ‡˝ˆ Ò?˘ˇ¯Ò Ò?˘ˇ¯Ò Ò?˘ˇ¯Ò Ò?˘ˇ¯Ò Ò?˘ˇ¯Ò¯>?˘ˇ¯Ò˝ 7Œ73±¶hÒò1?˘ˇ¯Ò˝ ÕIMJëDúJd1?˘ˇ¯Ò˝ MIMzë$ÅÀ‡1?˜ˇÒ˝ ÕIMBëò $1?˘ˇ¯Ô˝ 5N52ë$gqò>?˘ˇ¯Ô˚¸@˛?˘ˇ¯Ô˚¸@˛?˘ˇ¯Ô
  9826. Ò?˘ˇ¯Ô
  9827. Ò?˘ˇ¯Ô
  9828. Ò?˘ˇ¯Ô
  9829. Ò?˘ˇ¯Ô
  9830. Ò˘ˇ¯Ô
  9831. Ò˘ˇ¯Ô’’’’’’
  9832. Ò?˘ˇ‡Ôò,¿fi[¿fi[í6∞ë
  9833. Ò?˘ˇ‡Ô
  9834. Ò?˘ˇ¯Ô
  9835. Ò?˘ˇ¯Ô
  9836. Ò?˘ˇ¯Ô
  9837. Ò?˘ˇ¯Ô
  9838. Ò?˘ˇ¯Ô¸à˛Ä ?˘ˇ¯Ô3|Êss…æ0”4xÃhÊ?˘ˇ¯ÔL‘ôT—®ÍH¢N%2%ô?˘ˇ¯ÔD‘ôW—´jxí@Â%ü?˘ˇ¯ÔL‘ôTQöj@äLe%ò?˘ˇ˚ˇ¯Ò3TÊSQâÍ0í3∏Ã"Ê?˘ˇ¯Ò˛Ä˙ Ä?˘ˇ¯Ò˛Ä˙ Ä?˘ˇ¯Ò Ò?˘ˇ¯Ò Ò?˘ˇ¯Ò Ò?˘ˇ¯Ò Ò?˘ˇ¯Ò Ò˘ˇ¯Ò Ò˘ˇ¯ÒÊÒÊ0˝8¸Ê |"oúŒgx¸Ê ¥ öì*ï ¸Ê ˇ¿Æ¥ öì*ı ¸Ê ¨¥"öì*Ö ¸Ò?˘ˇ
  9839. ‡K¥jú e ¸Ò?˘ˇ‡˙˘Ò?˘ˇ¯˙˘ Ò?˘ˇ¯ÒòÅ\@[HHQoD πIJˇˇˇˇˇˇˇˇˇˇÃÃˇˇˇˇôôˇˇˇˇffˇˇˇˇ33ˇˇˇˇˇˇÃÃˇˇˇˇÃÃÃÃˇˇÃÃôô    ˇˇÃÃff
  9840. ˇˇÃÃ33 ˇˇÃà ˇˇôôˇˇ
  9841. ˇˇôôÃÃˇˇôôôôˇˇôôffˇˇôô33ˇˇôôˇˇffˇˇˇˇffÃÃˇˇffôôˇˇffffˇˇff33ˇˇffˇˇ33ˇˇˇˇ33ÃÃˇˇ33ôôˇˇ33ffˇˇ3333ˇˇ33ˇˇˇˇˇˇÃàˇˇôô!ˇˇff"ˇˇ33#ˇˇ$ÃÃˇˇˇˇ%ÃÃˇˇÃÃ&ÃÃˇˇôô'ÃÃˇˇff(ÃÃˇˇ33)ÃÃˇˇ*ÃÃÃÃˇˇ+ÃÃÃÃÃÃ,ÃÃÃÃôô-ÃÃÃÃff.ÃÃÃÃ33/ÃÃÃÃ0ÃÃôôˇˇ1ÃÃôôÃÃ2ÃÃôôôô3ÃÃôôff4ÃÃôô335ÃÃôô6ÃÃffˇˇ7ÃÃffÃÃ8ÃÃffôô9ÃÃffff:ÃÃff33;ÃÃff<ÃÃ33ˇˇ=ÃÃ33ÃÃ>ÃÃ33ôô?ÃÃ33ff@ÃÃ3333AÃÃ33BÃÃˇˇCÃÃÃÃDÃÃôôEÃÃffFÃÃ33GÃÃHôôˇˇˇˇIôôˇˇÃÃJôôˇˇôôKôôˇˇffLôôˇˇ33MôôˇˇNôôÃÃˇˇOôôÃÃÃÃPôôÃÃôôQôôÃÃffRôôÃÃ33SôôÃÃTôôôôˇˇUôôôôÃÃVôôôôôôWôôôôffXôôôô33YôôôôZôôffˇˇ[ôôffÃÃ\ôôffôô]ôôffff^ôôff33_ôôff`ôô33ˇˇaôô33ÃÃbôô33ôôcôô33ffdôô3333eôô33fôôˇˇgôôÃÃhôôôôiôôffjôô33kôôlffˇˇˇˇmffˇˇÃÃnffˇˇôôoffˇˇffpffˇˇ33qffˇˇrffÃÃˇˇsffÃÃÃÃtffÃÃôôuffÃÃffvffÃÃ33wffÃÃxffôôˇˇyffôôÃÃzffôôôô{ffôôff|ffôô33}ffôô~ffffˇˇffffÃÃÄffffôôÅffffffÇffff33ÉffffÑff33ˇˇÖff33ÃÃÜff33ôôáff33ffàff3333âff33äffˇˇãffÃÃåffôôçfffféff33èffê33ˇˇˇˇë33ˇˇÃÃí33ˇˇôôì33ˇˇffî33ˇˇ33ï33ˇˇñ33ÃÃˇˇó33ÃÃÃÃò33ÃÃôôô33ÃÃffö33ÃÃ33õ33ÃÃú33ôôˇˇù33ôôÃÃû33ôôôôü33ôôff†33ôô33°33ôô¢33ffˇˇ£33ffÃç33ffôô•33ffff¶33ff33ß33ff®3333ˇˇ©3333ÃÙ3333ôô´3333ff¨333333≠3333Æ33ˇˇØ33ÃÃ∞33ôô±33ff≤3333≥33¥ˇˇˇˇµˇˇÃÃ∂ˇˇôô∑ˇˇff∏ˇˇ33πˇˇ∫ÃÃˇˇªÃÃÃúÃÃôôΩÃÃffæÃÃ33øÃÿôôˇˇ¡ôôÃìôôôô√ôôffƒôô33≈ôôΔffˇˇ«ffÃûffôô…ffff ff33ÀffÃ33ˇˇÕ33ÃÃŒ33ôôœ33ff–3333—33“ˇˇ”ÃÑôô’ff÷33◊ÿˇˇˇŸ˘`˘`˘`⁄Ú–Ú–Ú–€Ï@Ï@Ï@‹Â∞Â∞Â∞›fl fl fl fiÿêÿêÿêfl“““‡ÀpÀpÀp·ƒ‡ƒ‡ƒ‡‚æPæPæP„∑¿∑¿∑¿‰±0±0±0™†™†™†Ê§§§ÁùÄùÄùÄËñññÈê`ê`ê`Íâ–â–â–ÎÉ@É@É@Ï|∞|∞|∞Ìv v v ÓoêoêoêÔiiibpbpbpÒ[‡[‡[‡ÚUPUPUPÛN¿N¿N¿ÙH0H0H0ıA†A†A†ˆ;;;˜4Ä4Ä4į---˘'`'`'`˙ – – –˚@@@¸∞∞∞˝
  9842.  
  9843.  
  9844.  ˛êêê@[“6ë'ÅÅ•ÅÅ• Å∏ˇÅRÅJˇˇÅSÅIˇ˛ˇÅÚSÅIˇ˛ˇÅÚSÅIˇ˛ˇÅÚSÅIˇ˛ˇÅÚSÅIˇ˛ˇÅÚUõ˚ˇÎGˇˇˇˇˇ˛ˇÅÚÅ¡ˇˇˇˇ¸ˇ˛ˇ˛ˇˇ˛ˇ˛ˇˇ˛ˇ    ˇˇˇˇ˛˛ˇˇˇˆˇ˚ˇˇˇ¸ˇˇ˛ˇÅÚè¬#˛ˇ˛ˇˇˇˇˇˇ˛ˇ˛ˇˇ˛ˇˇ˛ˇˇ˛
  9845. ˇ˛ˇ˛ˇ˛˜Gˇˇˇˇˇˇˇˇ˛˛ˇÚˇÇ䬡˛ˇˇˇˇˇˇˇˇˇˇˇ¸ˇˇ˛ˇˇ˛ˇˇˇ¸ˇ˜Gˇˇˇˇˇˇˇˇˇˇ˛ˇÚˇÇ嬎ˇˇˇˇˇˇˇˇˇˇˇˇˇ˛ˇˇ˛ˇˇ˛ˇˇˇˇˇÙGˇˇˇˇˇˇˇˇˇ˛ˇÚˇÇã¡
  9846. ˇ˛ˇ˛ˇˇˇ˛ˇ˛ˇ˛ˇ˛˛˛ˇˇˇ˛ˇ˛˝ˇˇ˛ˇ˛ˇˆGˇˇˇˇˇ˛ˇˇ˛ˇ˛ˇÚˇÇ]≥ˇ‚ˇˇGˇ˛ˇÚˇÇ^≥ˇ„ˇˇˇGˇ˛ˇÚˇÇUÅIˇ˛ˇÚˇÇUÅIˇ˛ˇÚˇÇUÅIˇ˛ˇÚˇÇ
  9847. Å∂ˇÚˇÇ Å˝∏ˇÚˇÇ Å˝∏ˇÚˇÇÅ•ˇÇÅ•ˇÇÅ•ˇÇÅ•ˇÇÅ•ˇÇÅ•ˇÇ
  9848. Å∏ˇˇÇTÅJˇˇˇÇUÅIˇ˛ˇÚˇÇUÅIˇ˛ˇÚˇÇUÅIˇ˛ˇÚˇÇUÅIˇ˛ˇÚˇÇUÅIˇ˛ˇÚˇÇc™ˇ˛ˇ¸ˇ˝¸ˇÎGˇˇˇ˛ˇÚˇÇïœˇˇˇˇ¸ˇ˛ˇ˛ˇˇ˛ˇˇˇ˛ˇˇˇˇ˛ˇˇˇ˛ˇ˝ˇˇ˛˛ˇˇˇˆGˇˇˇ˛ˇÚˇÇù–)˛ˇ˛ˇ˛ˇ˛ˇˇ˛ˇ˛ˇ˛ˇˇˇˇ˛ˇ˛ˇˇˇ˛˛˛˛
  9849. ˛ˇˇˇˇˇ˜Gˇ˛ˇÚˇÇ󖡲ˇˇˇˇˇˇˇˇˇˇˇ˝ˇˇˇˇ˝˛ˇˇˇˇ˛ˇ˛ˇˇˇ¸ˇ˜Gˇ˛ˇÚˇÇô–ˇˇˇˇˇˇˇˇˇˇˇˇˇˇ˝ˇˇˇˇ˛ˇˇˇˇˇ˛ˇ˛ˇˇˇˇˇÙGˇ˛ˇÚˇÇòœ
  9850. ˇ˛ˇ˛ˇ˛ˇ˛ˇ˛ˇ˛ˇ˛ˇ˛ˇˇ˛ˇ˛ˇˇ˛ˇˇ˛ˇ˝ˇ˝ˇ˛ˇˇˇˆGˇ˛ˇÚˇÇ]¡ˇ‘ˇˇGˇ˛ˇÚˇÇ^¡ˇ’ˇˇˇGˇ˛ˇÚˇÇUÅIˇ˛ˇÚˇÇUÅIˇ˛ˇÚˇÇUÅIˇ˛ˇÚˇÇ
  9851. Å∂ˇÚˇÇ Å˝∏ˇÚˇÇ Å˝∏ˇÚˇÇÅ•ˇÇÅ•ˇÇÅ•ˇÇÅ•ˇÇÅ•ˇÇÅ•ˇÇ
  9852. Å∏ˇˇÇTÅJˇˇˇÇUÅIˇ˛ˇÚˇÇUÅIˇ˛ˇÚˇÇUÅIˇ˛ˇÚˇÇUÅIˇ˛ˇÚˇÇUÅIˇ˛ˇÚˇÇdπ˛ˇ˛ˇˇÛˇ˜ˇÈGˇˇˇˇ˛ˇÚˇÇòÅ\@Ä[HHQo8 ∫IJˇˇˇˇˇˇˇˇˇˇÃÃˇˇˇˇôôˇˇˇˇffˇˇˇˇ33ˇˇˇˇˇˇÃÃˇˇˇˇÃÃÃÃˇˇÃÃôô    ˇˇÃÃff
  9853. ˇˇÃÃ33 ˇˇÃà ˇˇôôˇˇ
  9854. ˇˇôôÃÃˇˇôôôôˇˇôôffˇˇôô33ˇˇôôˇˇffˇˇˇˇffÃÃˇˇffôôˇˇffffˇˇff33ˇˇffˇˇ33ˇˇˇˇ33ÃÃˇˇ33ôôˇˇ33ffˇˇ3333ˇˇ33ˇˇˇˇˇˇÃàˇˇôô!ˇˇff"ˇˇ33#ˇˇ$ÃÃˇˇˇˇ%ÃÃˇˇÃÃ&ÃÃˇˇôô'ÃÃˇˇff(ÃÃˇˇ33)ÃÃˇˇ*ÃÃÃÃˇˇ+ÃÃÃÃÃÃ,ÃÃÃÃôô-ÃÃÃÃff.ÃÃÃÃ33/ÃÃÃÃ0ÃÃôôˇˇ1ÃÃôôÃÃ2ÃÃôôôô3ÃÃôôff4ÃÃôô335ÃÃôô6ÃÃffˇˇ7ÃÃffÃÃ8ÃÃffôô9ÃÃffff:ÃÃff33;ÃÃff<ÃÃ33ˇˇ=ÃÃ33ÃÃ>ÃÃ33ôô?ÃÃ33ff@ÃÃ3333AÃÃ33BÃÃˇˇCÃÃÃÃDÃÃôôEÃÃffFÃÃ33GÃÃHôôˇˇˇˇIôôˇˇÃÃJôôˇˇôôKôôˇˇffLôôˇˇ33MôôˇˇNôôÃÃˇˇOôôÃÃÃÃPôôÃÃôôQôôÃÃffRôôÃÃ33SôôÃÃTôôôôˇˇUôôôôÃÃVôôôôôôWôôôôffXôôôô33YôôôôZôôffˇˇ[ôôffÃÃ\ôôffôô]ôôffff^ôôff33_ôôff`ôô33ˇˇaôô33ÃÃbôô33ôôcôô33ffdôô3333eôô33fôôˇˇgôôÃÃhôôôôiôôffjôô33kôôlffˇˇˇˇmffˇˇÃÃnffˇˇôôoffˇˇffpffˇˇ33qffˇˇrffÃÃˇˇsffÃÃÃÃtffÃÃôôuffÃÃffvffÃÃ33wffÃÃxffôôˇˇyffôôÃÃzffôôôô{ffôôff|ffôô33}ffôô~ffffˇˇffffÃÃÄffffôôÅffffffÇffff33ÉffffÑff33ˇˇÖff33ÃÃÜff33ôôáff33ffàff3333âff33äffˇˇãffÃÃåffôôçfffféff33èffê33ˇˇˇˇë33ˇˇÃÃí33ˇˇôôì33ˇˇffî33ˇˇ33ï33ˇˇñ33ÃÃˇˇó33ÃÃÃÃò33ÃÃôôô33ÃÃffö33ÃÃ33õ33ÃÃú33ôôˇˇù33ôôÃÃû33ôôôôü33ôôff†33ôô33°33ôô¢33ffˇˇ£33ffÃç33ffôô•33ffff¶33ff33ß33ff®3333ˇˇ©3333ÃÙ3333ôô´3333ff¨333333≠3333Æ33ˇˇØ33ÃÃ∞33ôô±33ff≤3333≥33¥ˇˇˇˇµˇˇÃÃ∂ˇˇôô∑ˇˇff∏ˇˇ33πˇˇ∫ÃÃˇˇªÃÃÃúÃÃôôΩÃÃffæÃÃ33øÃÿôôˇˇ¡ôôÃìôôôô√ôôffƒôô33≈ôôΔffˇˇ«ffÃûffôô…ffff ff33ÀffÃ33ˇˇÕ33ÃÃŒ33ôôœ33ff–3333—33“ˇˇ”ÃÑôô’ff÷33◊ÿˇˇˇŸ˘`˘`˘`⁄Ú–Ú–Ú–€Ï@Ï@Ï@‹Â∞Â∞Â∞›fl fl fl fiÿêÿêÿêfl“““‡ÀpÀpÀp·ƒ‡ƒ‡ƒ‡‚æPæPæP„∑¿∑¿∑¿‰±0±0±0™†™†™†Ê§§§ÁùÄùÄùÄËñññÈê`ê`ê`Íâ–â–â–ÎÉ@É@É@Ï|∞|∞|∞Ìv v v ÓoêoêoêÔiiibpbpbpÒ[‡[‡[‡ÚUPUPUPÛN¿N¿N¿ÙH0H0H0ıA†A†A†ˆ;;;˜4Ä4Ä4į---˘'`'`'`˙ – – –˚@@@¸∞∞∞˝
  9855.  
  9856.  
  9857.  ˛êêê@Ä[6Rë'Ωfiˇˇˇˇ¸ˇ˛ˇˇˇ˛ˇˇˇ˛ˇ˝ˇ˛ˇˇˇˇ˛ˇˇˇˇˇˇˇˇˇ˛ˇ ˇˇˇˇˇˇˇ˜ˇˇˇˇ˛ˇ˛ˇ ˇˇ˛ˇÚˇÍ˛ˇ›ˇ˚ˇÚˇ˚ˇˇ·¸fl%ˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ˛ˇ˛ˇ˛ˇ˛ˇ˛ˇ˛ˇ˛ˇ˛ˇ˛ˇ˛ˇˇˇ˛ˇˇˇˆGˇ˛ˇˇˇˇˇ˛˛ˇÚÛˇ¯˛˛ ˛ˇ˛ˇˇ˛ˇˇ˛ˇˇˇˇˇ˛ˇ˛ˇ˛ˇˇ˛˝˛ˇˇˇˇ˛ˇˇ˛ˇˇ˛ˇ ˇˇ˛ˇˇˇˇ˛È˙flˇ˛ˇˇˇˇˇˇˇˇˇˇˇ˝ˇ ˇˇˇˇˇˇ˛ˇˇˇˇˇˇˇˇˇˇˇ˝ˇˇˇˇ˝ˇˇˆGˇˇˇˇˇˇˇˇˇ˛ˇÚˇÎˇ¸"ˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ˛ˇˇˇˇˇ˛ˇˇˇˇˇˇˇˇˇˇˇˇÈ¯flˇˇˇˇˇˇˇˇˇˇˇˇˇˇ˝.ˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ˝ˇˆGˇˇˇˇˇˇˇˇ˛ˇÚˇÎˇ¸ˇˇˇˇˇˇˇˇˇˇˇ˝ˇˇˇˇ˛ˇ¸ˇˇˇ˛ˇˇˇˇˇˇˇˇˇˇÈ˚fiFˇˇˇˇˇˇˇ˛ˇˇˇˇˇˇˇˇˇ˛ˇ˛ˇˇ˛ˇˇ˛ˇ˛ˇˇˇ˛ˇˇ˛ˇ˛˛ˇ    ˇˇˇˇˆˇ˛ˇ˛ˇ˛ˇ ˇ˛ˇÚˇÎˇ˛ˇ˛ˇ˛ˇ˛ˇˇˇˇ˛ˇ˛˝ˇˇˇ˛ˇˇˇ¸˛ˇˇˇˇˇˇ˛ˇˇˇ˛ˇÈ¶–ˇ±Gˇˇˇ˛ˇÚˇÍ˛ˇ˛    ˇˇˇˇˇ˛ˇˇˇˇˇˇˇˇˇˇ˝˛ˇˇˇˇ˛ˇˇˇˇ˛ˇ ˇˇˇˇˇˇÈ_–ˇ±Gˇˇˇ˛ˇÚˇ⁄ˇ“ˇ⁄]ÅIˇ˛ˇÚˇ⁄ˇ“ˇ⁄UÅIˇ˛ˇÚˇÇUÅIˇ˛ˇÚˇÇ
  9858. Å∂ˇÚˇÇ Å˝∏ˇÚˇÇ Å˝∏ˇÚˇÇÅ•ˇÇÅ•ˇÇÅ•ˇÇÅ•ˇÇÅ•ˇÇÅ•ˇÇ
  9859. Å∏ˇˇÇTÅJˇˇˇÇUÅIˇ˛ˇÚˇÇUÅIˇ˛ˇÚˇÇUÅIˇ˛ˇÚˇÇUÅIˇ˛ˇÚˇÇUÅIˇ˛ˇÚˇÇZùˇ¸ˇÍGˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ˛ˇÚˇÇã√ˇˇˇˇ¸ˇ˛ˇˇˇ˛ˇ˛ˇˇ˛ˇˇˇˇ˛ˇˇˇ˛ˇˇˆˇ˝ˇ3ˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ˛ˇÚˇÇéƒ#˛ˇ˛ˇˇˇˇ˛ˇ˛ˇ˛ˇˇ˛ˇˇ˛ˇˇ˛ˇ˛˛ˇˇ˛ıGˇ˛ˇ˛ˇˇ˛ˇ˛ˇˇˇˇˇˇˇˇ˛ˇ˛ˇÚˇÇãƒˇ˛ˇˇˇˇˇˇˇˇˇˇˇ¸ˇˇ˛ˇ¸ˇ ˇˇˇˇˇˇˆˇ˝ˇ3ˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ˛ˇÚˇÇëƒˇˇˇˇˇˇˇˇˇˇˇˇˇˇ˛ˇˇ˛ˇˇ˛    ˇˇˇˇˇ˛ˇ˜Gˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ˛ˇÚˇÇè√ˇ˛ˇ˛ˇˇˇˇˇ˛ˇ˛ˇ˛˛˛ˇˇˇ˛ˇˇ˛ ˇˇˇ˛ˇˇ˛ˇˆGˇˇ˛ˇˇ˛˛ˇ˛ˇˇˇˇˇˇˇˇˇˇ˛˛ˇÚˇÇ[¥ˇ‹ˇÛGˇˇ˛ˇÚˇÇ\¥ˇfiˇˇÚGˇ˛ˇÚˇÇUÅIˇ˛ˇÚˇÇUÅIˇ˛ˇÚˇÇUÅIˇ˛ˇÚˇÇ
  9860. Å∂ˇÚˇÇ Å˝∏ˇÚˇÇ Å˝∏ˇÚˇÇÅ•ˇÇÅ•ˇÇÅ•ˇÇÅ•ˇÇÅ•ˇÇÅ•ˇÇ
  9861. Å∏ˇˇÇTÅJˇˇˇÇUÅIˇ˛ˇÚˇÇUÅIˇ˛ˇÚˇÇUÅIˇ˛ˇÚˇÇUÅIˇ˛ˇÚˇÇUÅIˇ˛ˇÚˇÇh∞ˇ¸ˇÙˇˇ˛ˇˇ¯ˇıGˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ˛ˇÚˇÇù÷ˇˇˇˇ¸ˇ˛ˇ˛ˇˇ˛ˇ˛ˇˇ˛ˇˇˇˇ˛ˇˇˇ˛ˇˇˇˇ˛ˇˇˇˇ˛ˇˇˇˆˇ˝ˇ3ˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ˛ˇÚˇÇ£◊#ˇˇˇˇ˛ˇ˛ˇˇˇˇˇˇ˛ˇ˛ˇ˛ˇ˛˛˛˛˛ˇˇˇˇ˛ˇˇ˛ˇ˛ˇ˛ˇ˛ˇˇˆGˇˇ˛ˇˇˇˇˇˇ˛ˇ˛ˇˇ˛ˇ˛ˇˇ˛ˇÚˇÇú◊ˇ˛ˇˇˇˇˇˇˇˇˇˇˇ¸ˇˇ˛ˇ¸ˇˇˇˇˇˇˇˇˇˇ˛ˇˇˇˇˇˆˇ˝ˇ3ˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ˛ˇÅÚ¢◊ˇˇˇˇˇˇˇˇˇˇˇˇˇˇ˛ˇˇ˛ˇˇ˛ˇˇˇˇˇˇˇˇˇˇˇˇ˛ˇˇˇ˜Gˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ˛ˇÅÚ°÷ˇˇˇˇˇ˛ˇ˛ˇˇ˛ˇˇˇˇ˛ˇ˛ˇ˛˛˛ˇ˛ˇ˛ˇ˛ˇˇ˛ˇˇ˛ˇˇˇ˛ˇ˜ˇ˛ˇ4ˇˇˇˇˇˇˇ˛ˇ˛˛ˇ˛ˇˇˇ˛ˇÅÚY»ˇ€ˇ‡Gˇˇ˛ˇÅÚZ»ˇ›ˇˇflGˇ˛ˇÅÚSÅIˇ˛ˇÅÚSÅIˇ˛ˇÅÚSÅIˇ˛ˇÅÚòÅ\Ä¿[HHQoD ªÄ˛ˇˇˇˇˇˇˇˇˇˇÃÃˇˇˇˇôôˇˇˇˇffˇˇˇˇ33ˇˇˇˇˇˇÃÃˇˇˇˇÃÃÃÃˇˇÃÃôô    ˇˇÃÃff
  9862. ˇˇÃÃ33 ˇˇÃà ˇˇôôˇˇ
  9863. ˇˇôôÃÃˇˇôôôôˇˇôôffˇˇôô33ˇˇôôˇˇffˇˇˇˇffÃÃˇˇffôôˇˇffffˇˇff33ˇˇffˇˇ33ˇˇˇˇ33ÃÃˇˇ33ôôˇˇ33ffˇˇ3333ˇˇ33ˇˇˇˇˇˇÃàˇˇôô!ˇˇff"ˇˇ33#ˇˇ$ÃÃˇˇˇˇ%ÃÃˇˇÃÃ&ÃÃˇˇôô'ÃÃˇˇff(ÃÃˇˇ33)ÃÃˇˇ*ÃÃÃÃˇˇ+ÃÃÃÃÃÃ,ÃÃÃÃôô-ÃÃÃÃff.ÃÃÃÃ33/ÃÃÃÃ0ÃÃôôˇˇ1ÃÃôôÃÃ2ÃÃôôôô3ÃÃôôff4ÃÃôô335ÃÃôô6ÃÃffˇˇ7ÃÃffÃÃ8ÃÃffôô9ÃÃffff:ÃÃff33;ÃÃff<ÃÃ33ˇˇ=ÃÃ33ÃÃ>ÃÃ33ôô?ÃÃ33ff@ÃÃ3333AÃÃ33BÃÃˇˇCÃÃÃÃDÃÃôôEÃÃffFÃÃ33GÃÃHôôˇˇˇˇIôôˇˇÃÃJôôˇˇôôKôôˇˇffLôôˇˇ33MôôˇˇNôôÃÃˇˇOôôÃÃÃÃPôôÃÃôôQôôÃÃffRôôÃÃ33SôôÃÃTôôôôˇˇUôôôôÃÃVôôôôôôWôôôôffXôôôô33YôôôôZôôffˇˇ[ôôffÃÃ\ôôffôô]ôôffff^ôôff33_ôôff`ôô33ˇˇaôô33ÃÃbôô33ôôcôô33ffdôô3333eôô33fôôˇˇgôôÃÃhôôôôiôôffjôô33kôôlffˇˇˇˇmffˇˇÃÃnffˇˇôôoffˇˇffpffˇˇ33qffˇˇrffÃÃˇˇsffÃÃÃÃtffÃÃôôuffÃÃffvffÃÃ33wffÃÃxffôôˇˇyffôôÃÃzffôôôô{ffôôff|ffôô33}ffôô~ffffˇˇffffÃÃÄffffôôÅffffffÇffff33ÉffffÑff33ˇˇÖff33ÃÃÜff33ôôáff33ffàff3333âff33äffˇˇãffÃÃåffôôçfffféff33èffê33ˇˇˇˇë33ˇˇÃÃí33ˇˇôôì33ˇˇffî33ˇˇ33ï33ˇˇñ33ÃÃˇˇó33ÃÃÃÃò33ÃÃôôô33ÃÃffö33ÃÃ33õ33ÃÃú33ôôˇˇù33ôôÃÃû33ôôôôü33ôôff†33ôô33°33ôô¢33ffˇˇ£33ffÃç33ffôô•33ffff¶33ff33ß33ff®3333ˇˇ©3333ÃÙ3333ôô´3333ff¨333333≠3333Æ33ˇˇØ33ÃÃ∞33ôô±33ff≤3333≥33¥ˇˇˇˇµˇˇÃÃ∂ˇˇôô∑ˇˇff∏ˇˇ33πˇˇ∫ÃÃˇˇªÃÃÃúÃÃôôΩÃÃffæÃÃ33øÃÿôôˇˇ¡ôôÃìôôôô√ôôffƒôô33≈ôôΔffˇˇ«ffÃûffôô…ffff ff33ÀffÃ33ˇˇÕ33ÃÃŒ33ôôœ33ff–3333—33“ˇˇ”ÃÑôô’ff÷33◊ÿˇˇˇŸ˘`˘`˘`⁄Ú–Ú–Ú–€Ï@Ï@Ï@‹Â∞Â∞Â∞›fl fl fl fiÿêÿêÿêfl“““‡ÀpÀpÀp·ƒ‡ƒ‡ƒ‡‚æPæPæP„∑¿∑¿∑¿‰±0±0±0™†™†™†Ê§§§ÁùÄùÄùÄËñññÈê`ê`ê`Íâ–â–â–ÎÉ@É@É@Ï|∞|∞|∞Ìv v v ÓoêoêoêÔiiibpbpbpÒ[‡[‡[‡ÚUPUPUPÛN¿N¿N¿ÙH0H0H0ıA†A†A†ˆ;;;˜4Ä4Ä4į---˘'`'`'`˙ – – –˚@@@¸∞∞∞˝
  9864.  
  9865.  
  9866.  ˛êêêÄ¿[R6íë' Å∂ˇÅÚ
  9867. Å˝∏ˇÅÚ
  9868. Å˝∏ˇÅÚÅÅ•ÅÅ•ÅÅ•ÅÅ•ÅÅ•ÅÅ• Å∏ˇÅRÅJˇˇÅSÅIˇ˛ˇÅÚSÅIˇ˛ˇÅÚSÅIˇ˛ˇÅÚSÅIˇ˛ˇÅÚSÅIˇ˛ˇÅÚZΩˇ˛ˇˇÍˇˇ˛ˇ˝ˇ˝ˇ˝ˇˇ˛ˇÅÚ¶‚ˇˇˇˇ¸ˇ˛ˇˇˇ˛ˇˇˇ˛ˇˇˇ˛
  9869. ˇˇˇˇˇˇˇˇ˛˝ˇ˛ˇˇˇˇ˛ˇˇˇ˛˛ˇˇˇˆGˇˇˇˇˇˇˇˇˇˇ˛ˇÅÚÆ„&ˇ˛ˇ˛ˇˇˇ˛ˇ˛ˇˇˇˇ˛ˇ˛ˇ˛ˇˇ˛ˇ˛ˇ˛ˇ˛ ˇ˛ˇˇˇˇ˛
  9870. ˇ˛ˇˇˇˇˇ˜Gˇ˛ˇˇ˛˛ˇ˛ˇÅÚù„ˇ˛ˇˇˇˇˇˇˇˇˇˇˇ˝ˇˇˇˇ˛    ˇˇˇˇ˚˛ˇˇ¸ˇ˚ˇˇˇˇ¸ˇ˜)ˇˇˇˇˇˇ˝ˇÔˇÅ¨„ˇˇˇˇˇˇˇˇˇˇˇˇˇˇ˝ˇˇˇ˛ˇ˛    ˇˇˇˇˇ˛ˇˇˇˇ˛ˇˇ˛
  9871. ˇˇˇˇˇˇÙGˇˇˇˇˇˇˇˇ˛ˇÛˇÅ≠‚%˛ˇ˛ˇˇˇˇˇˇ˛ˇ˛ˇˇ˛ˇ˛ˇˇ˛ˇ˛ˇ˛
  9872. ˇ˛ˇ˛ˇˇ˛ˇ˛ˇˇˇˇ˝ˇ˛ˇ˛ˇˇˇˆˇˇ˛ˇ˛ˇ˛ˇˇ˛ˇ˛ˇ˛˛ˇÛˇÅa‘ˇ’ˇÓˇˇGˇ˛ˇÛˇÅb‘ˇ’ˇÔˇˇˇGˇ˛ˇÛˇÅUÅIˇ˛ˇÛˇÅUÅIˇ˛ˇÛˇÅUÅIˇ˛ˇÛˇÅ
  9873. Å∂ˇÛˇÅ Å˝∏ˇÛˇÅ Å˝∏ˇÛˇÅŶˇÈˇ˛ˇ›ˇÛˇ–dŶˇÍˇ˛ˇˇˇ¸ˇ˛ˇˇˇ˛ˇˇˇ˛ˇˇˇ˝ˇˇˇˇ˛ˇˇˇ˝ˇˇˇˇˇ˛ˇˇˇˇˇˇˇˇˇˇıgÅ¶Ûˇ˜ˇ¸"ˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ˛ˇˇˇˇˇˇˇˇ˛ˇˇˇˇ˛ˇˇˇˇˇˇˇˇˇˆfŶˇÍ˛¸"ˇˇˇ˛ˇˇ˛ˇ˛ˇ˛ˇˇ˛ˇˇˇ˛˛˛˛˛ˇ˛ˇ˛˛ˇ˛ˇˇˇ˛ˇˇˇˇˇˇˇˇ˛ˇˇ˛ˇˆ`ŶˇÍˇ˛ˇˇˇˇˇˇˇˇˇˇˇˇˇ˝ˇˇˇ˛ ˇˇˇˇˇˇˇ˚ˇˇ¸ˇˇˇˇˇˇˇˇˇÛcŶˇÈ˛ˇ˛    ˇˇˇˇˇ˛ˇˇˇˇˇˇˇˇˇˇ˝ˇˇˇˇ˛ˇˇˇ˝ˇ˛ˇˇˇ˛ˇˇ˛ˇˇ˛ˇˇˇˇıÅ∏ˇÒˇŸˇ™XÅJˇˇÒˇŸˇ™UÅIˇ˛ˇÛˇÅUÅIˇ˛ˇÛˇÅUÅIˇ˛ˇÛˇÅUÅIˇ˛ˇÛˇÅUÅIˇ˛ˇÛˇÅ_∂ˇ˛ˇÔ¸ˇˆGˇˇˇˇˇˇˇˇˇˇ˛ˇÛˇÅü€ˇˇˇˇ¸ˇ˛ˇ˛ˇˇ˛ˇˇˇ˛ˇˇˇ˛
  9874. ˇˇˇˇˇˇˇˇ˛˝ˇ˛ˇˇˇˇ¸ˇˇ˛ˇ˜ˇ˝ˇ*ˇˇˇˇˇˇˇ˛ˇÛˇÅ®‹&ˇˇˇˇˇ˛ˇˇ˛ˇˇˇ˛ˇˇˇˇ˛˛˛ˇ˛ˇˇ˛ˇˇ˛ ˇˇˇˇˇˇ˝ˇ˛˛˛˜Gˇˇˇˇˇ˛ˇˇˇˇ˛˛ˇÛˇÅò‹ˇ˛ˇˇˇˇˇˇˇˇˇˇˇ˝ˇˇˇˇ˛    ˇˇˇˇ˚˛ˇˇ¸ˇ˙ˇˇ˛ˇ˜ˇ˝ˇ*ˇˇˇˇˇˇˇÔˇÅ•‹ˇˇˇˇˇˇˇˇˇˇˇˇˇˇ˝ˇˇˇ˛ˇ˛    ˇˇˇˇˇ˛ˇˇˇˇ˛ˇˇ˝ˇˇ˛ˇ˜Gˇˇˇˇˇˇˇˇˇˇˇ˛ˇÅÚ¢€ˇˇˇˇ˛ˇ˛ˇ˛ˇ˛ˇˇ˛ˇˇˇˇˇˇ˛ˇˇ˛˛
  9875. ˛ˇ˛ˇˇ˛ˇˇ˛ˇˇˇˇ¸˛ˇ˛ˇˆGˇˇˇ˛ˇˇˇ˛ˇ˛˛ˇ˛ˇÅÚYÕˇ’ˇ·Gˇˇ˛ˇÅÚYÕˇ’ˇ·Gˇ˛ˇÅÚSÅIˇ˛ˇÅÚSÅIˇ˛ˇÅÚSÅIˇ˛ˇÅÚ Å∂ˇÅÚ
  9876. Å˝∏ˇÅÚ
  9877. Å˝∏ˇÅÚÅÅ•ÅÅ•ÅÅ•ÅÅ•ÅÅ•ÅÅ• Å∏ˇÅòÅ\¿fi[HHQo8 ºÄ˛ˇˇˇˇˇˇˇˇˇˇÃÃˇˇˇˇôôˇˇˇˇffˇˇˇˇ33ˇˇˇˇˇˇÃÃˇˇˇˇÃÃÃÃˇˇÃÃôô    ˇˇÃÃff
  9878. ˇˇÃÃ33 ˇˇÃà ˇˇôôˇˇ
  9879. ˇˇôôÃÃˇˇôôôôˇˇôôffˇˇôô33ˇˇôôˇˇffˇˇˇˇffÃÃˇˇffôôˇˇffffˇˇff33ˇˇffˇˇ33ˇˇˇˇ33ÃÃˇˇ33ôôˇˇ33ffˇˇ3333ˇˇ33ˇˇˇˇˇˇÃàˇˇôô!ˇˇff"ˇˇ33#ˇˇ$ÃÃˇˇˇˇ%ÃÃˇˇÃÃ&ÃÃˇˇôô'ÃÃˇˇff(ÃÃˇˇ33)ÃÃˇˇ*ÃÃÃÃˇˇ+ÃÃÃÃÃÃ,ÃÃÃÃôô-ÃÃÃÃff.ÃÃÃÃ33/ÃÃÃÃ0ÃÃôôˇˇ1ÃÃôôÃÃ2ÃÃôôôô3ÃÃôôff4ÃÃôô335ÃÃôô6ÃÃffˇˇ7ÃÃffÃÃ8ÃÃffôô9ÃÃffff:ÃÃff33;ÃÃff<ÃÃ33ˇˇ=ÃÃ33ÃÃ>ÃÃ33ôô?ÃÃ33ff@ÃÃ3333AÃÃ33BÃÃˇˇCÃÃÃÃDÃÃôôEÃÃffFÃÃ33GÃÃHôôˇˇˇˇIôôˇˇÃÃJôôˇˇôôKôôˇˇffLôôˇˇ33MôôˇˇNôôÃÃˇˇOôôÃÃÃÃPôôÃÃôôQôôÃÃffRôôÃÃ33SôôÃÃTôôôôˇˇUôôôôÃÃVôôôôôôWôôôôffXôôôô33YôôôôZôôffˇˇ[ôôffÃÃ\ôôffôô]ôôffff^ôôff33_ôôff`ôô33ˇˇaôô33ÃÃbôô33ôôcôô33ffdôô3333eôô33fôôˇˇgôôÃÃhôôôôiôôffjôô33kôôlffˇˇˇˇmffˇˇÃÃnffˇˇôôoffˇˇffpffˇˇ33qffˇˇrffÃÃˇˇsffÃÃÃÃtffÃÃôôuffÃÃffvffÃÃ33wffÃÃxffôôˇˇyffôôÃÃzffôôôô{ffôôff|ffôô33}ffôô~ffffˇˇffffÃÃÄffffôôÅffffffÇffff33ÉffffÑff33ˇˇÖff33ÃÃÜff33ôôáff33ffàff3333âff33äffˇˇãffÃÃåffôôçfffféff33èffê33ˇˇˇˇë33ˇˇÃÃí33ˇˇôôì33ˇˇffî33ˇˇ33ï33ˇˇñ33ÃÃˇˇó33ÃÃÃÃò33ÃÃôôô33ÃÃffö33ÃÃ33õ33ÃÃú33ôôˇˇù33ôôÃÃû33ôôôôü33ôôff†33ôô33°33ôô¢33ffˇˇ£33ffÃç33ffôô•33ffff¶33ff33ß33ff®3333ˇˇ©3333ÃÙ3333ôô´3333ff¨333333≠3333Æ33ˇˇØ33ÃÃ∞33ôô±33ff≤3333≥33¥ˇˇˇˇµˇˇÃÃ∂ˇˇôô∑ˇˇff∏ˇˇ33πˇˇ∫ÃÃˇˇªÃÃÃúÃÃôôΩÃÃffæÃÃ33øÃÿôôˇˇ¡ôôÃìôôôô√ôôffƒôô33≈ôôΔffˇˇ«ffÃûffôô…ffff ff33ÀffÃ33ˇˇÕ33ÃÃŒ33ôôœ33ff–3333—33“ˇˇ”ÃÑôô’ff÷33◊ÿˇˇˇŸ˘`˘`˘`⁄Ú–Ú–Ú–€Ï@Ï@Ï@‹Â∞Â∞Â∞›fl fl fl fiÿêÿêÿêfl“““‡ÀpÀpÀp·ƒ‡ƒ‡ƒ‡‚æPæPæP„∑¿∑¿∑¿‰±0±0±0™†™†™†Ê§§§ÁùÄùÄùÄËñññÈê`ê`ê`Íâ–â–â–ÎÉ@É@É@Ï|∞|∞|∞Ìv v v ÓoêoêoêÔiiibpbpbpÒ[‡[‡[‡ÚUPUPUPÛN¿N¿N¿ÙH0H0H0ıA†A†A†ˆ;;;˜4Ä4Ä4į---˘'`'`'`˙ – – –˚@@@¸∞∞∞˝
  9880.  
  9881.  
  9882.  ˛êêê¿fi[í6∞ë'RÅJˇˇÅSÅIˇ˛ˇÅÚSÅIˇ˛ˇÅÚSÅIˇ˛ˇÅÚSÅIˇ˛ˇÅÚSÅIˇ˛ˇÅÚ^“ˇˇ˛ˇ‡˛ˇˇÍˇˇ˛ˇ¸ˇ¸ˇˇ˛ˇÅÚ∂˜ˇˇˇˇ¸ˇ˛ˇˇˇ˛ˇˇˇ˛ˇ˝ˇˇˇˇ¸ˇ˛ˇˇ˝
  9883. ˇˇˇˇˇˇˇˇ˛˝ˇ˛ˇˇˇˇ˛ˇˇˇ˛˛ˇˇˇˆGˇˇˇˇˇˇˇˇ˛ˇÅÚ√¯"˛ˇ˛ˇ˛ˇ˛ˇˇˇˇ˛ˇ˛ˇ˛ˇ˛ˇˇˇˇ˛ ˇ˛ˇˇˇ˛ˇ˛ˇˇ˛ˇ˛ˇ˛ˇ˛ ˇ˛ˇˇˇˇ˛
  9884. ˇ˛ˇˇˇˇˇ˜Gˇˇ˛ˇˇˇ˛ˇÅÚ±¯ˇ˛ˇˇˇˇˇˇˇˇˇˇˇ¸ˇˇ˛ˇˇˇˇˇˇˇˇˇˇ˝ˇ˛    ˇˇˇˇ˚˛ˇˇ¸ˇ˚ˇˇˇˇ¸ˇ˜$ˇˇˇˇ˝ˇ˛ˇÅÚø¯ˇˇˇˇˇˇˇˇˇˇˇˇˇˇ˛ˇˇ˛ˇˇˇˇˇˇˇˇˇˇ˚ˇ˛    ˇˇˇˇˇ˛ˇˇˇˇ˛ˇˇ˛
  9885. ˇˇˇˇˇˇÙGˇˇˇˇˇˇ˛ˇÚˇÇ¡˜
  9886. ˇ˛ˇ˛ˇ˛ˇ˛ˇˇˇˇ˛ˇ˛ˇ˛˛˛ˇ˛ˇ˛˛ˇˇˇ˛ˇ˛˝ˇ˛ˇ˛
  9887. ˇ˛ˇ˛ˇˇ˛ˇ˛ˇˇˇˇ˝ˇ˛ˇ˛ˇˇˇˆGˇˇˇ˛˛˛˛˛ˇÚˇÇaÈˇ¿ˇÓˇˇGˇ˛ˇÚˇÇbÈˇ¿ˇÔˇˇˇGˇ˛ˇÚˇÇUÅIˇ˛ˇÚˇÇUÅIˇ˛ˇÚˇÇUÅIˇ˛ˇÚˇÇ
  9888. Å∂ˇÚˇÇ Å˝∏ˇÚˇÇ Å˝∏ˇÚˇÇÅ•ˇÇ"Å•ˇÎˇˇˇˇ˛ˇˇ¸ˇˇ˙˛ˇ›˛ˇ⁄EÅ•ˇÎˇˇˇˇ˛ˇˇˇˇ¸ˇ˝ˇ˛ˇˇˇ¸ˇ˛ˇˇˇ˛ˇˇˇ˛ˇ˝ˇ⁄EÅ•ˇËˇ˛˛
  9889. ˛ˇ˛ˇˇ˛ˇ˝ˇ¸"ˇ˛ˇˇˇ˛ˇ˛ˇˇˇˇ˛ˇ˛ˇÿDÅ•Ûˇıˇˇˇ˛ˇˇˇˇˇ˝ˇ¸ˇˇˇˇˇˇˇˇˇˇˇ˝ˇˇˇˇÿFÅ•ˇËˇˇˇˇˇˇˇˇˇ˝ˇ˛ˇˇˇˇˇˇˇˇˇˇˇˇˇ˝ˇˇˇÿKÅ∏ˇˇËˇ˛ˇ˛ˇˇˇ˛¸ˇˇ˛˛!˛ˇˇˇˇˇˇ˛ˇ˛ˇˇ˛ˇ˛ˇˇÿXÅJˇˇˇ√ˇ¡YÅIˇ˛ˇÚˇ√ˇ¡UÅIˇ˛ˇÚˇÇò,@[@[∞6ë Ò?˘ˇ¯Ò Ò?˘ˇ¯Ò Ò?˘ˇ¯Ò˚˛>?˘ˇ¯Òf˘ÃÊwì|a¶hÒò1?˘ˇ¯Òô©2©SQ‘ëDúJd1?˘ˇ¯Òâ©2ØSV‘Ò$ÅÀ‡1?˘ˇ¯Òô©2®S4‘Åò $1?˘ˇ˚ˇ¯Òf©Ã¶S‘a$gqò>?˘ˇ¯Ô˛˘@˛?˘ˇ¯Ô˛˘@˛?˘ˇ¯Ô
  9890. Ò?˘ˇ¯Ô
  9891. Ò?˘ˇ¯Ô
  9892. Ò?˘ˇ¯Ô
  9893. Ò?˘ˇ¯Ô
  9894. Ò˘ˇ¯Ô
  9895. Ò˘ˇ¯Ô’’’’’’
  9896. Ò?˘ˇ‡Ô
  9897. Ò?˘ˇ‡Ô
  9898. Ò?˘ˇ¯Ô
  9899. Ò?˘ˇ¯Ô
  9900. Ò?˘ˇ¯Ô
  9901. Ò?˘ˇ¯Ô
  9902. Ò?˘ˇ¯Ô˚
  9903. @ÄÄ ?˘ˇ¯Ô3|Êssy∞”4xÃhÊ?˘ˇ¯ÔL‘ôT—h»¢N%2%ô?˘ˇ¯ÔD‘ôW—h»í@Â%ü?˘ˇ¯ÔL‘ôTQh»äLe%ò?˘ˇ¯Ô3TÊSQh∞í3∏Ã"Ê?˘ˇ˚ˇ¯Ò˝Ä˚ Ä?˘ˇ¯Ò˝Ä˚ Ä?˘ˇ¯Ò Ò?˘ˇ¯Ò Ò?˘ˇ¯Ò Ò?˘ˇ¯Ò Ò?˘ˇ¯Ò Ò˘ˇ¯Ò Ò˘ˇ¯ÒÊÒÊÒ¸D˛Êù Ã˚çΔÊvd\»ˇÊ˛
  9904. ïA2™SI¢LíÂ0ˇÊ˛
  9905. ï!™SO¢LíÂˡÊˇ¿ï2™SH¢Lí¡Ò?˘ˇ‡˛
  9906. ï Ã´çF¢ta\»ˇÒ?˘ˇ‡˚˛@¸Ò?˘ˇ¯˚˛@¸ Ò?˘ˇ¯ÒÒ?˘ˇ¯†¿˛Ò?˘ˇ¯    }…èç∏Fq3¿˛Ò?˘ˇ¯U*JÜ®âKL†˝Ò?˘ˇ¯    U+ ö®OKGê˝!˙    Å>?˘ˇ¯U*
  9907. í®(KL˝%˛
  9908. f˘ÃÊvÛa¶hÒò1?˘ˇ¯    U…äé®FE3˝˛
  9909. ô©2©R—ëDúJd1?˘ˇ¯˛ı˛
  9910. â©2ØR—ë$ÅÀ‡1?˘ˇ¯˛ı˛
  9911. ô©2®R—ëò $1?˘ˇ˚ˇ¯Ò˛
  9912. f©Ã¶R—a$gqò>?˘ˇ¯Ôò,@Ä[@Ä[60ë˝˙@˛?˘ˇ¯Ô˝˙@˛?˘ˇ¯Ô
  9913. Ò?˘ˇ¯Ô
  9914. Ò?˘ˇ¯Ô
  9915. Ò?˘ˇ¯Ô
  9916. Ò˘ˇ¯Ô
  9917. Ò˘ˇ¯Ô’’’’’’
  9918. Ò?˘ˇ‡Ô
  9919. Ò?˘ˇ‡Ô
  9920. Ò?˘ˇ¯Ô
  9921. Ò?˘ˇ¯Ô
  9922. Ò?˘ˇ¯Ô
  9923. Ò?˘ˇ¯Ô
  9924. Ò?˘ˇ¯Ô
  9925. Ò?˘ˇ¯Ô˚˛Ä ?˘ˇ¯ÔÕÛôÃÌ3p”4xÃhÊ?˘ˇ¯Ô3ReR•L–¢N%2%ô?˘ˇ¯ÔRe^•D–í@Â%ü?˘ˇ¯Ô3ReP•L–äLe%ò?˘ˇ˚ˇ¯˝¿ˆÕSôL•3Pí3∏Ã"Ê?˘ˇ¯˝¿ˆ˛˙ Ä?˘ˇ¯˛¯ˆ˛˙ Ä?˘ˇ¯˛ˆÒ?˘ˇ¯˛‡ˆÒ?˘ˇ¯˛¿ˆÒ?˘ˇ¯˛ˇˇ¿˜Ò˘ˇ¯˛Ä¿˜Ò˘ˇ¯˛Ä¿˜ Ê˛ü¸¿˜ Êü¸»˜ ÊôÃØ Ê?Å¿˛˜ Êˇ¿?Å¿ˇ˜ Ê?Å¿ˇ˜Ò?˘ˇ‡?Å¿˛˜Ò?˘ˇ‡ſØÒ?˘ˇ¯Å¿»˜Ò?˘ˇ¯˛Å¿¿˜Ò?˘ˇ¯˛Å¿¿˜Ò?˘ˇ¯˛ˇˇ¿˜Ò?˘ˇ¯˛ˇˇ¿˜Ò?˘ˇ¯˛ˇ¿˜˙
  9926. ˛>?˘ˇ¯ÒõÁ3ô⁄f·¶hÒò1?˘ˇ¯Òf§ •Jô°DúJd1?˘ˇ¯Ò&§ ΩJâ°$ÅÀ‡1?˘ˇ¯Òf§ °Jô°ò $1?˘ˇ˚ˇ¯Òöß2ôJf°$gqò>?˘ˇ¯Ô˝˙@˛?˘ˇ¯Ô˝˙@˛?˘ˇ¯Ô
  9927. Ò?˘ˇ¯Ô
  9928. Ò?˘ˇ¯Ô
  9929. Ò?˘ˇ¯Ô
  9930. Ò˘ˇ¯Ô
  9931. Ò˘ˇ¯Ô’’’ò,Ä¿[Ä¿[06pë’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’ò,¿fi[¿fi[p6éë’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’òÅ\@[HHQoD ΩIJˇˇˇˇˇˇˇˇˇˇÃÃˇˇˇˇôôˇˇˇˇffˇˇˇˇ33ˇˇˇˇˇˇÃÃˇˇˇˇÃÃÃÃˇˇÃÃôô    ˇˇÃÃff
  9932. ˇˇÃÃ33 ˇˇÃà ˇˇôôˇˇ
  9933. ˇˇôôÃÃˇˇôôôôˇˇôôffˇˇôô33ˇˇôôˇˇffˇˇˇˇffÃÃˇˇffôôˇˇffffˇˇff33ˇˇffˇˇ33ˇˇˇˇ33ÃÃˇˇ33ôôˇˇ33ffˇˇ3333ˇˇ33ˇˇˇˇˇˇÃàˇˇôô!ˇˇff"ˇˇ33#ˇˇ$ÃÃˇˇˇˇ%ÃÃˇˇÃÃ&ÃÃˇˇôô'ÃÃˇˇff(ÃÃˇˇ33)ÃÃˇˇ*ÃÃÃÃˇˇ+ÃÃÃÃÃÃ,ÃÃÃÃôô-ÃÃÃÃff.ÃÃÃÃ33/ÃÃÃÃ0ÃÃôôˇˇ1ÃÃôôÃÃ2ÃÃôôôô3ÃÃôôff4ÃÃôô335ÃÃôô6ÃÃffˇˇ7ÃÃffÃÃ8ÃÃffôô9ÃÃffff:ÃÃff33;ÃÃff<ÃÃ33ˇˇ=ÃÃ33ÃÃ>ÃÃ33ôô?ÃÃ33ff@ÃÃ3333AÃÃ33BÃÃˇˇCÃÃÃÃDÃÃôôEÃÃffFÃÃ33GÃÃHôôˇˇˇˇIôôˇˇÃÃJôôˇˇôôKôôˇˇffLôôˇˇ33MôôˇˇNôôÃÃˇˇOôôÃÃÃÃPôôÃÃôôQôôÃÃffRôôÃÃ33SôôÃÃTôôôôˇˇUôôôôÃÃVôôôôôôWôôôôffXôôôô33YôôôôZôôffˇˇ[ôôffÃÃ\ôôffôô]ôôffff^ôôff33_ôôff`ôô33ˇˇaôô33ÃÃbôô33ôôcôô33ffdôô3333eôô33fôôˇˇgôôÃÃhôôôôiôôffjôô33kôôlffˇˇˇˇmffˇˇÃÃnffˇˇôôoffˇˇffpffˇˇ33qffˇˇrffÃÃˇˇsffÃÃÃÃtffÃÃôôuffÃÃffvffÃÃ33wffÃÃxffôôˇˇyffôôÃÃzffôôôô{ffôôff|ffôô33}ffôô~ffffˇˇffffÃÃÄffffôôÅffffffÇffff33ÉffffÑff33ˇˇÖff33ÃÃÜff33ôôáff33ffàff3333âff33äffˇˇãffÃÃåffôôçfffféff33èffê33ˇˇˇˇë33ˇˇÃÃí33ˇˇôôì33ˇˇffî33ˇˇ33ï33ˇˇñ33ÃÃˇˇó33ÃÃÃÃò33ÃÃôôô33ÃÃffö33ÃÃ33õ33ÃÃú33ôôˇˇù33ôôÃÃû33ôôôôü33ôôff†33ôô33°33ôô¢33ffˇˇ£33ffÃç33ffôô•33ffff¶33ff33ß33ff®3333ˇˇ©3333ÃÙ3333ôô´3333ff¨333333≠3333Æ33ˇˇØ33ÃÃ∞33ôô±33ff≤3333≥33¥ˇˇˇˇµˇˇÃÃ∂ˇˇôô∑ˇˇff∏ˇˇ33πˇˇ∫ÃÃˇˇªÃÃÃúÃÃôôΩÃÃffæÃÃ33øÃÿôôˇˇ¡ôôÃìôôôô√ôôffƒôô33≈ôôΔffˇˇ«ffÃûffôô…ffff ff33ÀffÃ33ˇˇÕ33ÃÃŒ33ôôœ33ff–3333—33“ˇˇ”ÃÑôô’ff÷33◊ÿˇˇˇŸ˘`˘`˘`⁄Ú–Ú–Ú–€Ï@Ï@Ï@‹Â∞Â∞Â∞›fl fl fl fiÿêÿêÿêfl“““‡ÀpÀpÀp·ƒ‡ƒ‡ƒ‡‚æPæPæP„∑¿∑¿∑¿‰±0±0±0™†™†™†Ê§§§ÁùÄùÄùÄËñññÈê`ê`ê`Íâ–â–â–ÎÉ@É@É@Ï|∞|∞|∞Ìv v v ÓoêoêoêÔiiibpbpbpÒ[‡[‡[‡ÚUPUPUPÛN¿N¿N¿ÙH0H0H0ıA†A†A†ˆ;;;˜4Ä4Ä4į---˘'`'`'`˙ – – –˚@@@¸∞∞∞˝
  9934.  
  9935.  
  9936.  ˛êêê@[∞6ë'UÅIˇ˛ˇÚˇÇUÅIˇ˛ˇÚˇÇUÅIˇ˛ˇÚˇÇdÀˇˇ˛ˇ‡˛ˇÔ¸ˇˆGˇˇˇˇˇˇˇˇˇˇ˛ˇÚˇÇ∞ˇˇˇˇ¸ˇ˛ˇˇˇ˛ˇˇˇ˛ˇ˝ˇˇˇˇ¸ˇ˛ˇˇ˝
  9937. ˇˇˇˇˇˇˇˇ˛˝ˇ˛ˇˇˇˇ¸ˇˇ˛ˇ˜ˇ˝ˇ*ˇˇˇˇˇˇˇ˛ˇÚˇÇΩÒ+ˇ˛ˇ˛ˇˇˇ˛ˇ˛ˇˇˇˇ˛ˇ˛ˇ˛ˇ˛˛ ˛ˇˇ˛ˇˇ˛˛˛ˇ˛ˇˇ˛ˇˇ˛ ˇˇˇˇˇˇ˝ˇ˛˛˛˜Gˇˇˇˇˇ˛ˇˇˇˇ˛˛ˇÚˇÇØÒˇ˛ˇˇˇˇˇˇˇˇˇˇˇ˝ˇˇˇˇˇˇˇˇˇˇˇˇˇ˝ˇ˛    ˇˇˇˇ˚˛ˇˇ¸ˇ˙ˇˇ˛ˇ˜ˇ˝ˇ*ˇˇˇˇˇˇˇ˛ˇÚˇÇπÒˇˇˇˇˇˇˇˇˇˇˇˇˇˇ˝ˇˇˇˇˇˇˇˇˇˇˇˇ˚ˇ˛    ˇˇˇˇˇ˛ˇˇˇˇ˛ˇˇ˝ˇˇ˛ˇ˜Gˇˇˇˇˇˇˇˇˇˇˇ˛ˇÚˇÇ∂&˛ˇ˛ˇˇˇˇˇˇ˛ˇ˛ˇˇ˛ˇ˛ˇˇˇ˛ˇ˛ˇ˛ˇ˛˛˛ˇ˝ˇˇ˛˛
  9938. ˛ˇ˛ˇˇ˛ˇˇ˛ˇˇˇˇ¸˛ˇ˛ˇˆGˇˇˇ˛ˇˇˇ˛ˇ˛˛ˇ˛ˇÅÚY‚ˇ¿ˇ·Gˇˇ˛ˇÅÚY‚ˇ¿ˇ·Gˇ˛ˇÅÚSÅIˇ˛ˇÅÚSÅIˇ˛ˇÅÚSÅIˇ˛ˇÅÚ Å∂ˇÅÚ
  9939. Å˝∏ˇÅÚ
  9940. Å˝∏ˇÅÚÅÅ•ÅÅ•ÅÅ•ÅÅ•ÅÅ•ÅÅ• Å∏ˇÅRÅJˇˇÅSÅIˇ˛ˇÅÚSÅIˇ˛ˇÅÚSÅIˇ˛ˇÅÚSÅIˇ˛ˇÅÚSÅIˇ˛ˇÅÚ_ ˇˇ˚ˇÏ˛ˇˇÍˇˇ˛ˇ¸ˇ¸ˇˇ˛ˇÅÚ±Ôˇˇˇˇ¸ˇ˛ˇˇˇ˛ˇˇˇ˛ˇˇˇ˝ˇˇˇˇˇ˝
  9941. ˇˇˇˇˇˇˇˇ˛˝ˇ˛ˇˇˇˇ˛ˇˇˇ˛˛ˇˇˇˆGˇˇˇˇˇˇˇˇ˛ˇÅÚª"˛ˇ˛ˇ˛ˇ˛ˇˇˇˇ˛ˇ˛ˇ˛ˇ˛ˇ˛ˇˇ˛ˇ˛ˇ˛ˇˇ˛ˇ˛ˇ˛ˇ˛ ˇ˛ˇˇˇˇ˛
  9942. ˇ˛ˇˇˇˇˇ˜Gˇˇ˛ˇˇˇ˛ˇÅÚ´ˇ˛ˇˇˇˇˇˇˇˇˇˇˇ¸ˇˇ˛ˇˇˇˇ˛ˇˇˇ˛    ˇˇˇˇ˚˛ˇˇ¸ˇ˚ˇˇˇˇ¸ˇ˜$ˇˇˇˇ˝ˇ˛ˇÅÚ∏ˇˇˇˇˇˇˇˇˇˇˇˇˇˇ˛ˇˇ˛ˇˇˇˇ˛ˇˇˇ˛ˇ˛    ˇˇˇˇˇ˛ˇˇˇˇ˛ˇˇ˛
  9943. ˇˇˇˇˇˇÙGˇˇˇˇˇˇ˛ˇÅÚπÔ
  9944. ˇ˛ˇ˛ˇ˛ˇ˛ˇˇˇˇ˛ˇ˛ˇ˛˛˛ˇˇˇ˛ˇˇ˛˝ˇ˛ˇ˛
  9945. ˇ˛ˇ˛ˇˇ˛ˇ˛ˇˇˇˇ˝ˇ˛ˇ˛ˇˇˇˆGˇˇˇ˛˛˛˛˛ˇÚˇÇa·ˇ»ˇÓˇˇGˇ˛ˇÚˇÇb·ˇ»ˇÔˇˇˇGˇ˛ˇÚˇÇUÅIˇ˛ˇÚˇÇUÅIˇ˛ˇÚˇÇUÅIˇ˛ˇÚˇÇ
  9946. Å∂ˇÚˇÇ Å˝∏ˇÚˇÇ Å˝∏ˇÚˇÇÅ•ˇÇ Å•ˇÎˇˇ˚ˇ˛ˇ”ˇÔˇ˛ˇÎ_Å•ˇÎˇˇ˛ˇ˛ˇˇˇ¸ˇˇˇˇ¸ˇ˛ˇ˛ˇˇ˛ˇ˛ˇˇ˛ˇˇˇ˛ˇ    ˇˇˇˇˇ˛ˇ˛ˇˇˇˇÚ]Å•ˇÊ    ˇ˛ˇ˛ˇ¸#˛ˇ˛ˇˇˇˇˇˇ˛ˇ˛ˇˇ˛ˇˇ˛ˇˇˇˇˇ˛ˇ˛ˇˇ˛ˇ˛Ò\Å•ˇÊ
  9947. ˇˇˇˇˇ˝ˇ˛ˇˇˇˇˇˇˇˇˇˇˇ¸ˇˇ˛ˇˇˇˇˇˇˇ˛ˇˇ˝ˇˇÚ_Å•ÛˇÛˇˇˇˇ˛ˇ˛ˇˇˇˇˇˇˇˇˇˇˇˇˇˇ˛ˇˇ˛ˇˇˇˇˇˇˇ˛ˇˇˇ¸ˇÛaÅ∏ˇˇÊ
  9948. ˇˇ˛ˇˇ¸
  9949. ˇ˛ˇ˛ˇˇˇ˛ˇ˛ˇ˛ˇ˛˛˛ˇˇˇ˛ˇ˛ˇˇ˛˛˛ˇ˝
  9950. ˇ˛ˇˇ˛ˇ˛ˇÚ\ÅJˇˇˇ»ˇÁˇ◊]ÅIˇ˛ˇÚˇ»ˇÁˇ◊UÅIˇ˛ˇÚˇÇlÅIˇ˛ˇÚˇÁˇıˇÓˇˇÌˇÒˇˇÁúÅIˇ˛ˇÚˇÍˇˇ¸ˇ˛ˇˇˇˇ˛¸ˇ˛ˇˇˇˇ˛ˇ˝ˇ˛ˇˇ˛ˇ˛ˇˇˇˇˇ˛ˇ˝ˇˇÁüÅIˇ˛ˇÚˇÎˇ˛ˇ˛ˇ˛ˇˇˇˇ˛ˇˇˇ˝˛ˇˇˇˇ˛ˇ˛ˇˇ˛ˇˇˇ˛ˇ˛ˇˇ‡õÅIˇ˛ˇÚˇÍˇˇˇˇˇˇˇˇ˝ˇˇˇˇˇˇˇˇˇˇ˝ˇ˝ˇ    ˇˇˇˇˇ˛˝ˇˇ·®√ˇˇ˚ˇÏ˛ˇÔ¸ˇˆGˇˇˇˇˇˇˇˇˇ˛ˇÚˇÈˇˇˇˇˇˇˇˇˇ¸ˇˇˇˇˇˇˇˇ¸ˇˇ˝ ˇˇˇˇˇˇˇ˚ˇ‚˝Ëˇˇˇˇ˛ˇ ˛ˇ˛ˇˇˇˇ˛ˇ ˇˇˇˇ˛ˇˇ˛ˇ˛ˇ˛ˇˇ˝
  9951. ˛ˇˇˇˇˇˇˇ˛˛ˇ˛˛˛ˇ˛ˇ¸ˇ˛˛˛˜ˇ˛˛ˇ*ˇ˛ˇ˛ˇˇˇ˛ˇÚˇÍˇ˛ˇ˛ˇ˛ˇˇˇ˛ˇ˛ˇˇˇ˛˛ˇˇˇˇ˝ˇ˛ˇˇˇ˛
  9952. ˇ˛ˇ˛ˇ˛˛˛ˇ‰∏È+ˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ˛ˇˇˇ˛ˇˇ˛ˇˇ˛ˇ˛ ˇˇˇˇˇˇ˝ˇˇ˛ˇ˜Gˇˇˇˇˇˇˇˇˇˇ˛ˇÚˇflˇ•≠Èˇ˛ˇˇˇˇˇˇˇˇˇˇˇ˝ˇ ˇˇˇˇˇˇ˛ˇˇˇ˛    ˇˇˇˇ˚˛ˇˇ¸ˇ˙ˇˇ˛ˇ˜ˇ˝ˇ*ˇˇˇˇˇˇ˛ˇÚˇflˇ•¥Èˇˇˇˇˇˇˇˇˇˇˇˇˇˇ˝
  9953. ˛ˇˇˇ˛ˇ˛ˇˇˇ˛ˇ˛    ˇ˛ˇˇˇ˛ˇ˛ˇˇ˛ˇ˛˝ˇˇ˛ˇ˜Gˇˇˇˇ˛ˇˇˇˇˇ˛ˇÚˇÇ™Ë
  9954. ˇˇˇˇˇˇˇ˛ˇˇˇˇˇˇˇˇˇˇˇˇˇ˛ˇˇˇ˝ˇˇˇ˛ˇˇ˛ˇ˛ˇ˛ˇˇˇˇ¸¸ˇˆˇ˛ˇ+ˇˇˇˇˇˇˇ˛ˇÅÚòÅ\@Ä[HHQo8 æÄ˛ˇˇˇˇˇˇˇˇˇˇÃÃˇˇˇˇôôˇˇˇˇffˇˇˇˇ33ˇˇˇˇˇˇÃÃˇˇˇˇÃÃÃÃˇˇÃÃôô    ˇˇÃÃff
  9955. ˇˇÃÃ33 ˇˇÃà ˇˇôôˇˇ
  9956. ˇˇôôÃÃˇˇôôôôˇˇôôffˇˇôô33ˇˇôôˇˇffˇˇˇˇffÃÃˇˇffôôˇˇffffˇˇff33ˇˇffˇˇ33ˇˇˇˇ33ÃÃˇˇ33ôôˇˇ33ffˇˇ3333ˇˇ33ˇˇˇˇˇˇÃàˇˇôô!ˇˇff"ˇˇ33#ˇˇ$ÃÃˇˇˇˇ%ÃÃˇˇÃÃ&ÃÃˇˇôô'ÃÃˇˇff(ÃÃˇˇ33)ÃÃˇˇ*ÃÃÃÃˇˇ+ÃÃÃÃÃÃ,ÃÃÃÃôô-ÃÃÃÃff.ÃÃÃÃ33/ÃÃÃÃ0ÃÃôôˇˇ1ÃÃôôÃÃ2ÃÃôôôô3ÃÃôôff4ÃÃôô335ÃÃôô6ÃÃffˇˇ7ÃÃffÃÃ8ÃÃffôô9ÃÃffff:ÃÃff33;ÃÃff<ÃÃ33ˇˇ=ÃÃ33ÃÃ>ÃÃ33ôô?ÃÃ33ff@ÃÃ3333AÃÃ33BÃÃˇˇCÃÃÃÃDÃÃôôEÃÃffFÃÃ33GÃÃHôôˇˇˇˇIôôˇˇÃÃJôôˇˇôôKôôˇˇffLôôˇˇ33MôôˇˇNôôÃÃˇˇOôôÃÃÃÃPôôÃÃôôQôôÃÃffRôôÃÃ33SôôÃÃTôôôôˇˇUôôôôÃÃVôôôôôôWôôôôffXôôôô33YôôôôZôôffˇˇ[ôôffÃÃ\ôôffôô]ôôffff^ôôff33_ôôff`ôô33ˇˇaôô33ÃÃbôô33ôôcôô33ffdôô3333eôô33fôôˇˇgôôÃÃhôôôôiôôffjôô33kôôlffˇˇˇˇmffˇˇÃÃnffˇˇôôoffˇˇffpffˇˇ33qffˇˇrffÃÃˇˇsffÃÃÃÃtffÃÃôôuffÃÃffvffÃÃ33wffÃÃxffôôˇˇyffôôÃÃzffôôôô{ffôôff|ffôô33}ffôô~ffffˇˇffffÃÃÄffffôôÅffffffÇffff33ÉffffÑff33ˇˇÖff33ÃÃÜff33ôôáff33ffàff3333âff33äffˇˇãffÃÃåffôôçfffféff33èffê33ˇˇˇˇë33ˇˇÃÃí33ˇˇôôì33ˇˇffî33ˇˇ33ï33ˇˇñ33ÃÃˇˇó33ÃÃÃÃò33ÃÃôôô33ÃÃffö33ÃÃ33õ33ÃÃú33ôôˇˇù33ôôÃÃû33ôôôôü33ôôff†33ôô33°33ôô¢33ffˇˇ£33ffÃç33ffôô•33ffff¶33ff33ß33ff®3333ˇˇ©3333ÃÙ3333ôô´3333ff¨333333≠3333Æ33ˇˇØ33ÃÃ∞33ôô±33ff≤3333≥33¥ˇˇˇˇµˇˇÃÃ∂ˇˇôô∑ˇˇff∏ˇˇ33πˇˇ∫ÃÃˇˇªÃÃÃúÃÃôôΩÃÃffæÃÃ33øÃÿôôˇˇ¡ôôÃìôôôô√ôôffƒôô33≈ôôΔffˇˇ«ffÃûffôô…ffff ff33ÀffÃ33ˇˇÕ33ÃÃŒ33ôôœ33ff–3333—33“ˇˇ”ÃÑôô’ff÷33◊ÿˇˇˇŸ˘`˘`˘`⁄Ú–Ú–Ú–€Ï@Ï@Ï@‹Â∞Â∞Â∞›fl fl fl fiÿêÿêÿêfl“““‡ÀpÀpÀp·ƒ‡ƒ‡ƒ‡‚æPæPæP„∑¿∑¿∑¿‰±0±0±0™†™†™†Ê§§§ÁùÄùÄùÄËñññÈê`ê`ê`Íâ–â–â–ÎÉ@É@É@Ï|∞|∞|∞Ìv v v ÓoêoêoêÔiiibpbpbpÒ[‡[‡[‡ÚUPUPUPÛN¿N¿N¿ÙH0H0H0ıA†A†A†ˆ;;;˜4Ä4Ä4į---˘'`'`'`˙ – – –˚@@@¸∞∞∞˝
  9957.  
  9958.  
  9959.  ˛êêê@Ä[60ë'Y⁄ˇ»ˇ·Gˇˇ˛ˇÅÚY⁄˛»ˇ·Gˇ˛ˇÅÚSÅIˇ˛ˇÅÚSÅIˇ˛ˇÅÚ Å∂ˇÅÚ
  9960. Å˝∏ˇÅÚ
  9961. Å˝∏ˇÅÚÅÅ•ÅÅ•ÅÅ•ÅÅ•ÅÅ•ÅÅ• Å∏ˇÅRÅJˇˇÅSÅIˇ˛ˇÅÚSÅIˇ˛ˇÅÚSÅIˇ˛ˇÅÚSÅIˇ˛ˇÅÚSÅIˇ˛ˇÅÚSÅIˇ˛ˇÅÚ_Ãˇˇ„˛ˇˇÍˇˇˇ˛ˇ'ˇˇˇˇˇ˛ˇÅÚπÒ
  9962. ˇ˛ˇ˛ˇˇ˛ˇˇ˛ˇ"ˇˇˇˇ˛ˇ˛ˇ˛ˇˇ˛ˇˇˇˇˇ˛ˇˇ˝
  9963. ˇ˛ˇˇˇˇˇ˛˛˛˛ˇ˛ˇ˛ˇ˛˛˛ˇˇ˛ˇ˛ˇ˛ˇˆGˇˇ˛ˇˇˇ˛ˇˇˇˇ˛ˇÅÚ∫Ú4ˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ˝ˇˇ˛ˇˇ˛ˇ˛ ˇˇˇˇˇˇ˛
  9964. ˇˇˇˇˇˇˇ˜'ˇˇˇˇˇˇ˝ˇ˛ˇÅÚ≠Úˇ˛ˇˇˇˇˇˇˇˇˇˇˇ˝ˇ
  9965. ˇˇˇˇˇ˛ˇˇˇˇ˝    ˇˇˇˇ˚˛ˇˇ¸ˇ˚ˇˇˇˇ¸ˇ˜'ˇˇˇˇˇˇ˝ˇ˛ˇÅÚøÚ˛ˇ˛ˇ˛ˇ˛ˇˇˇˇ˛ˇ˛˝ˇˇˇ˛ˇˇˇˇˇ˛˝ˇ˛    ˇˇˇˇˇ˛ˇˇˇ˛˛˛ˇ˛
  9966. ˇˇ˛ˇ˛ˇÙGˇˇˇˇˇ˛ˇˇˇ˛ˇÚˇfiˇˇßøÒ
  9967. ˇˇˇˇˇˇˇ˛ˇ"ˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ˝ˇˇˇ˛ˇˇ˛ˇ˛ˇ˛ˇˇˇˇ˝ˇ˛ˇ˛ˇˇˇˆˇˇ˛ˇ'ˇˇˇˇ˛ˇÚˇfiˇˇße„ˇΔˇÓˇˇGˇ˛ˇÚˇ·˘ˇ™f„ˇΔˇÔ˛ˇˇGˇ˛ˇÚˇ‡˚ˇ©YÅIˇ˛ˇÚˇfl˝ˇ®YÅIˇ˛ˇÚˇfl˛ˇßÅ∂ˇÚˇÊÔˇØÅ˝∏ˇÚˇÊˇÚˇˇØÅ˝∏ˇÚˇÊˇÚˇˇØÅ•ˇÊˇˆˇˇˇØÅ•ˇÈˇˇˆˇˇˇˇ≤$Å•ˇÈ    ˇˇˇˇˇ˛ˇ ˇˇˇˇˇˇ≥Å•ˇÏ˙ˇ˚˛ˇ˚˙ˇ¥Å•Ûˇ˘˙ˇ˚˛ˇ˚˘ˇµÅ•ˇÏ˙ˇ˚˛ˇ˚˘ˇµÅ∏ˇˇÏ˙ˇ˚˛ˇ˚˙ˇ¥hÅJˇˇˇÈˇˇˇ˚˛ˇ˚ˇˇˇˇ≥hÅIˇ˛ˇÚˇÈˇˇ˚˛ˇ˚ˇˇˇ≤bÅIˇ˛ˇÚˇÊˇ˚˛ˇ˚ˇˇØbÅIˇ˛ˇÚˇÊˇ˚˛ˇ˚ˇˇØYÅIˇ˛ˇÚˇÊÔˇØYÅIˇ˛ˇÚˇÊÔˇØYÅIˇ˛ˇÚˇÂˇØa≈ˇˇ„˛ˇÔ¸ˇˆGˇˇˇˇˇˇˇˇˇˇ˛ˇÚˇÇ≤Ͳˇ˛ˇˇ˛˛ˇ$ˇˇ˛ˇ˛ˇ˛ˇ˛ˇ˛ˇˇ˛ˇˇˇˇˇˇ˛ˇ˝
  9968. ˛ˇˇˇˇˇˇˇ˛˛ˇ˛˛˛ˇ˛ˇ¸ˇ˛˛˛˜ˇ˛˛ˇ*ˇ˛ˇ˛ˇˇ˛˛ˇÚˇÇµÎ4ˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ˝ˇˇ˛ˇˇ˛ˇ˛ ˇˇˇˇˇˇ˝ˇˇ˛ˇ˜Gˇˇˇˇˇˇˇˇˇˇˇ˛ˇÚˇÇ™Îˇ˛ˇˇˇˇˇˇˇˇˇˇˇ˝ˇ
  9969. ˇˇˇˇˇ˛ˇˇˇˇ˝    ˇˇˇˇ˚˛ˇˇ¸ˇ˙ˇˇ˛ˇ˜ˇ˝ˇ*ˇˇˇˇˇˇˇ˛ˇÚˇÇµÎˇ˛ˇ˛ˇˇˇ˛ˇ˛ˇˇˇˇ˝ˇ˛ˇˇˇˇˇˇˇˇ˝ˇ˛    ˇ˛ˇˇˇ˛ˇ˛ˇˇ˛ˇ˛˝ˇˇ˛ˇ˜Gˇˇˇˇ˛ˇˇˇˇˇˇ˛ˇÚˇÇ¨Í
  9970. ˇˇˇˇˇˇˇ˛ˇ"ˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ˝ˇˇˇ˛ˇˇ˛ˇ˛ˇ˛ˇˇˇˇ¸¸ˇˆˇ˛ˇ+ˇˇˇˇˇˇˇˇ˛ˇÅÚY‹ˇΔˇ·Gˇˇ˛ˇÅÚY‹ˇΔˇ·Gˇ˛ˇÅÚSÅIˇ˛ˇÅÚSÅIˇ˛ˇÅÚ Å∂ˇÅÚ
  9971. Å˝∏ˇÅÚ
  9972. Å˝∏ˇÅÚÅÅ•ÅÅ•ÅÅ•òÅ\Ä¿[HHQoD øÄ˛ˇˇˇˇˇˇˇˇˇˇÃÃˇˇˇˇôôˇˇˇˇffˇˇˇˇ33ˇˇˇˇˇˇÃÃˇˇˇˇÃÃÃÃˇˇÃÃôô    ˇˇÃÃff
  9973. ˇˇÃÃ33 ˇˇÃà ˇˇôôˇˇ
  9974. ˇˇôôÃÃˇˇôôôôˇˇôôffˇˇôô33ˇˇôôˇˇffˇˇˇˇffÃÃˇˇffôôˇˇffffˇˇff33ˇˇffˇˇ33ˇˇˇˇ33ÃÃˇˇ33ôôˇˇ33ffˇˇ3333ˇˇ33ˇˇˇˇˇˇÃàˇˇôô!ˇˇff"ˇˇ33#ˇˇ$ÃÃˇˇˇˇ%ÃÃˇˇÃÃ&ÃÃˇˇôô'ÃÃˇˇff(ÃÃˇˇ33)ÃÃˇˇ*ÃÃÃÃˇˇ+ÃÃÃÃÃÃ,ÃÃÃÃôô-ÃÃÃÃff.ÃÃÃÃ33/ÃÃÃÃ0ÃÃôôˇˇ1ÃÃôôÃÃ2ÃÃôôôô3ÃÃôôff4ÃÃôô335ÃÃôô6ÃÃffˇˇ7ÃÃffÃÃ8ÃÃffôô9ÃÃffff:ÃÃff33;ÃÃff<ÃÃ33ˇˇ=ÃÃ33ÃÃ>ÃÃ33ôô?ÃÃ33ff@ÃÃ3333AÃÃ33BÃÃˇˇCÃÃÃÃDÃÃôôEÃÃffFÃÃ33GÃÃHôôˇˇˇˇIôôˇˇÃÃJôôˇˇôôKôôˇˇffLôôˇˇ33MôôˇˇNôôÃÃˇˇOôôÃÃÃÃPôôÃÃôôQôôÃÃffRôôÃÃ33SôôÃÃTôôôôˇˇUôôôôÃÃVôôôôôôWôôôôffXôôôô33YôôôôZôôffˇˇ[ôôffÃÃ\ôôffôô]ôôffff^ôôff33_ôôff`ôô33ˇˇaôô33ÃÃbôô33ôôcôô33ffdôô3333eôô33fôôˇˇgôôÃÃhôôôôiôôffjôô33kôôlffˇˇˇˇmffˇˇÃÃnffˇˇôôoffˇˇffpffˇˇ33qffˇˇrffÃÃˇˇsffÃÃÃÃtffÃÃôôuffÃÃffvffÃÃ33wffÃÃxffôôˇˇyffôôÃÃzffôôôô{ffôôff|ffôô33}ffôô~ffffˇˇffffÃÃÄffffôôÅffffffÇffff33ÉffffÑff33ˇˇÖff33ÃÃÜff33ôôáff33ffàff3333âff33äffˇˇãffÃÃåffôôçfffféff33èffê33ˇˇˇˇë33ˇˇÃÃí33ˇˇôôì33ˇˇffî33ˇˇ33ï33ˇˇñ33ÃÃˇˇó33ÃÃÃÃò33ÃÃôôô33ÃÃffö33ÃÃ33õ33ÃÃú33ôôˇˇù33ôôÃÃû33ôôôôü33ôôff†33ôô33°33ôô¢33ffˇˇ£33ffÃç33ffôô•33ffff¶33ff33ß33ff®3333ˇˇ©3333ÃÙ3333ôô´3333ff¨333333≠3333Æ33ˇˇØ33ÃÃ∞33ôô±33ff≤3333≥33¥ˇˇˇˇµˇˇÃÃ∂ˇˇôô∑ˇˇff∏ˇˇ33πˇˇ∫ÃÃˇˇªÃÃÃúÃÃôôΩÃÃffæÃÃ33øÃÿôôˇˇ¡ôôÃìôôôô√ôôffƒôô33≈ôôΔffˇˇ«ffÃûffôô…ffff ff33ÀffÃ33ˇˇÕ33ÃÃŒ33ôôœ33ff–3333—33“ˇˇ”ÃÑôô’ff÷33◊ÿˇˇˇŸ˘`˘`˘`⁄Ú–Ú–Ú–€Ï@Ï@Ï@‹Â∞Â∞Â∞›fl fl fl fiÿêÿêÿêfl“““‡ÀpÀpÀp·ƒ‡ƒ‡ƒ‡‚æPæPæP„∑¿∑¿∑¿‰±0±0±0™†™†™†Ê§§§ÁùÄùÄùÄËñññÈê`ê`ê`Íâ–â–â–ÎÉ@É@É@Ï|∞|∞|∞Ìv v v ÓoêoêoêÔiiibpbpbpÒ[‡[‡[‡ÚUPUPUPÛN¿N¿N¿ÙH0H0H0ıA†A†A†ˆ;;;˜4Ä4Ä4į---˘'`'`'`˙ – – –˚@@@¸∞∞∞˝
  9975.  
  9976.  
  9977.  ˛êêêÄ¿[06pë'ÅÅ•ÅÅ•ÅÅ•ÅÅ•ÅÅ•ÅÅ•ÅÅ•ÅÅ•ÅÅ•ÅÅ•ÅÅ•ÅÅ•ÅÅ•ÅÅ•ÅÅ•ÅÅ•ÅÅ•ÅÅ•ÅÅ•ÅÅ•ÅÅ•ÅÅ•ÅÅ•ÅÅ•ÅÅ•ÅÅ•ÅÅ•ÅÅ•ÅÅ•ÅÅ•ÅÅ•ÅÅ•ÅÅ•ÅÅ•ÅÅ•ÅÅ•ÅÅ•ÅÅ•ÅÅ•ÅÅ•ÅÅ•ÅÅ•ÅÅ•ÅÅ•ÅÅ•ÅÅ•ÅÅ•ÅÅ•ÅÅ•ÅÅ•ÅÅ•ÅÅ•ÅÅ•ÅÅ•ÅÅ•ÅÅ•ÅÅ•ÅÅ•ÅÅ•ÅÅ•ÅÅ•ÅÅ•ÅÅ•ÅÅ•òÅ\¿fi[HHQo8 ¿Ä˛ˇˇˇˇˇˇˇˇˇˇÃÃˇˇˇˇôôˇˇˇˇffˇˇˇˇ33ˇˇˇˇˇˇÃÃˇˇˇˇÃÃÃÃˇˇÃÃôô    ˇˇÃÃff
  9978. ˇˇÃÃ33 ˇˇÃà ˇˇôôˇˇ
  9979. ˇˇôôÃÃˇˇôôôôˇˇôôffˇˇôô33ˇˇôôˇˇffˇˇˇˇffÃÃˇˇffôôˇˇffffˇˇff33ˇˇffˇˇ33ˇˇˇˇ33ÃÃˇˇ33ôôˇˇ33ffˇˇ3333ˇˇ33ˇˇˇˇˇˇÃàˇˇôô!ˇˇff"ˇˇ33#ˇˇ$ÃÃˇˇˇˇ%ÃÃˇˇÃÃ&ÃÃˇˇôô'ÃÃˇˇff(ÃÃˇˇ33)ÃÃˇˇ*ÃÃÃÃˇˇ+ÃÃÃÃÃÃ,ÃÃÃÃôô-ÃÃÃÃff.ÃÃÃÃ33/ÃÃÃÃ0ÃÃôôˇˇ1ÃÃôôÃÃ2ÃÃôôôô3ÃÃôôff4ÃÃôô335ÃÃôô6ÃÃffˇˇ7ÃÃffÃÃ8ÃÃffôô9ÃÃffff:ÃÃff33;ÃÃff<ÃÃ33ˇˇ=ÃÃ33ÃÃ>ÃÃ33ôô?ÃÃ33ff@ÃÃ3333AÃÃ33BÃÃˇˇCÃÃÃÃDÃÃôôEÃÃffFÃÃ33GÃÃHôôˇˇˇˇIôôˇˇÃÃJôôˇˇôôKôôˇˇffLôôˇˇ33MôôˇˇNôôÃÃˇˇOôôÃÃÃÃPôôÃÃôôQôôÃÃffRôôÃÃ33SôôÃÃTôôôôˇˇUôôôôÃÃVôôôôôôWôôôôffXôôôô33YôôôôZôôffˇˇ[ôôffÃÃ\ôôffôô]ôôffff^ôôff33_ôôff`ôô33ˇˇaôô33ÃÃbôô33ôôcôô33ffdôô3333eôô33fôôˇˇgôôÃÃhôôôôiôôffjôô33kôôlffˇˇˇˇmffˇˇÃÃnffˇˇôôoffˇˇffpffˇˇ33qffˇˇrffÃÃˇˇsffÃÃÃÃtffÃÃôôuffÃÃffvffÃÃ33wffÃÃxffôôˇˇyffôôÃÃzffôôôô{ffôôff|ffôô33}ffôô~ffffˇˇffffÃÃÄffffôôÅffffffÇffff33ÉffffÑff33ˇˇÖff33ÃÃÜff33ôôáff33ffàff3333âff33äffˇˇãffÃÃåffôôçfffféff33èffê33ˇˇˇˇë33ˇˇÃÃí33ˇˇôôì33ˇˇffî33ˇˇ33ï33ˇˇñ33ÃÃˇˇó33ÃÃÃÃò33ÃÃôôô33ÃÃffö33ÃÃ33õ33ÃÃú33ôôˇˇù33ôôÃÃû33ôôôôü33ôôff†33ôô33°33ôô¢33ffˇˇ£33ffÃç33ffôô•33ffff¶33ff33ß33ff®3333ˇˇ©3333ÃÙ3333ôô´3333ff¨333333≠3333Æ33ˇˇØ33ÃÃ∞33ôô±33ff≤3333≥33¥ˇˇˇˇµˇˇÃÃ∂ˇˇôô∑ˇˇff∏ˇˇ33πˇˇ∫ÃÃˇˇªÃÃÃúÃÃôôΩÃÃffæÃÃ33øÃÿôôˇˇ¡ôôÃìôôôô√ôôffƒôô33≈ôôΔffˇˇ«ffÃûffôô…ffff ff33ÀffÃ33ˇˇÕ33ÃÃŒ33ôôœ33ff–3333—33“ˇˇ”ÃÑôô’ff÷33◊ÿˇˇˇŸ˘`˘`˘`⁄Ú–Ú–Ú–€Ï@Ï@Ï@‹Â∞Â∞Â∞›fl fl fl fiÿêÿêÿêfl“““‡ÀpÀpÀp·ƒ‡ƒ‡ƒ‡‚æPæPæP„∑¿∑¿∑¿‰±0±0±0™†™†™†Ê§§§ÁùÄùÄùÄËñññÈê`ê`ê`Íâ–â–â–ÎÉ@É@É@Ï|∞|∞|∞Ìv v v ÓoêoêoêÔiiibpbpbpÒ[‡[‡[‡ÚUPUPUPÛN¿N¿N¿ÙH0H0H0ıA†A†A†ˆ;;;˜4Ä4Ä4į---˘'`'`'`˙ – – –˚@@@¸∞∞∞˝
  9980.  
  9981.  
  9982.  ˛êêê¿fi[p6éë'ÅÅ•ÅÅ•ÅÅ•ÅÅ•ÅÅ•ÅÅ•ÅÅ•ÅÅ•ÅÅ•ÅÅ•ÅÅ•ÅÅ•ÅÅ•ÅÅ•ÅÅ•ÅÅ•ÅÅ•ÅÅ•ÅÅ•ÅÅ•ÅÅ•ÅÅ•ÅÅ•ÅÅ•ÅÅ•ÅÅ•ÅÅ•ÅÅ•ÅÅ•ÅÅ•†è†É†ø
  9983. d,     Helvetica
  9984.     °dONLNdÆ*5@(Q6Figure 4°dONLNd∑6AÖ* Math Component Resource x4x&,Times
  9985. ({) 
  9986. +
  9987. 15
  9988. (Ú*1TECHNIQUES FOR WRITING AND DEBUGGING COMPONENTS  
  9989. )”
  9990. December 1992ˇ†æ°¿9pse
  9991. currentpoint
  9992. /picTop exch def
  9993. /picLeft exch def
  9994. psb
  9995. †ø†æ°¿=pse
  9996. currentpoint
  9997. /picBottom exch def
  9998. /picRight exch def
  9999. psb
  10000. †ø†æ°¿[ 133 218 480 573]
  10001. °¿€1 dict begin /s exch def
  10002. picLeft picTop translate
  10003. picRight picLeft sub s 2 get s 0 get sub div
  10004. picBottom picTop sub s 1 get s 3 get sub div
  10005. scale
  10006. s 0 get neg s 3 get neg translate
  10007. end
  10008. /showpage {} def
  10009. /copypage {} def
  10010. °¿ %!PS-Adobe-3.0 EPSF-3.0
  10011. %%Creator: Adobe Illustrator(TM) 3.2
  10012. %%For: (Engineering Support) (Apple Computer, Inc.)
  10013. %%Title: (#3)
  10014. %%CreationDate: (10/5/92) (5:53 PM)
  10015. %%BoundingBox: 133 218 480 573
  10016. %%DocumentProcessColors: Magenta Black
  10017. %%DocumentFonts: Helvetica
  10018. %%DocumentSuppliedResources: procset Adobe_packedarray 2.0 0
  10019. %%+ procset Adobe_cmykcolor 1.1 0
  10020. %%+ procset Adobe_cshow 1.1 0
  10021. %%+ procset Adobe_customcolor 1.0 0
  10022. %%+ procset Adobe_typography_AI3 1.0 1
  10023. %%+ procset Adobe_IllustratorA_AI3 1.0 1
  10024. %AI3_ColorUsage: Color
  10025. %AI3_TemplateBox: 306 396 306 396
  10026. %AI3_TileBox: 30 31 582 761
  10027. %AI3_DocumentPreview: Macintosh_ColorPic
  10028. %%EndComments
  10029. %%BeginProlog
  10030. %%BeginResource: procset Adobe_packedarray 2.0 0
  10031. %%Title: (Packed Array Operators)
  10032. %%Version: 2.0 
  10033. %%CreationDate: (8/2/90) ()
  10034. %%Copyright: ((C) 1987-1990 Adobe Systems Incorporated All Rights Reserved)
  10035. userdict /Adobe_packedarray 5 dict dup begin put
  10036. /initialize            % - initialize -
  10037. {
  10038. /packedarray where
  10039.     {
  10040.     pop
  10041.     }
  10042.     {
  10043.     Adobe_packedarray begin
  10044.     Adobe_packedarray
  10045.         {
  10046.         dup xcheck
  10047.             {
  10048.             bind
  10049.             } if
  10050.         userdict 3 1 roll put
  10051.         } forall
  10052.     end
  10053.     } ifelse
  10054. } def
  10055. /terminate            % - terminate -
  10056. {
  10057. } def
  10058. /packedarray        % arguments count packedarray array
  10059. {
  10060. array astore readonly
  10061. } def
  10062. /setpacking            % boolean setpacking -
  10063. {
  10064. pop
  10065. } def
  10066. /currentpacking        % - setpacking boolean
  10067. {
  10068. false
  10069. } def
  10070. currentdict readonly pop end
  10071. %%EndResource
  10072. Adobe_packedarray /initialize get exec
  10073. %%BeginResource: procset Adobe_cmykcolor 1.1 0
  10074. %%Title: (CMYK Color Operators)
  10075. %%Version: 1.1 
  10076. %%CreationDate: (1/23/89) ()
  10077. %%Copyright: ((C) 1987-1990 Adobe Systems Incorporated All Rights Reserved)
  10078. currentpacking true setpacking
  10079. userdict /Adobe_cmykcolor 4 dict dup begin put
  10080. /initialize            % - initialize -
  10081. {
  10082. /setcmykcolor where
  10083.     {
  10084.     pop
  10085.     }
  10086.     {
  10087.     userdict /Adobe_cmykcolor_vars 2 dict dup begin put
  10088.     /_setrgbcolor
  10089.         /setrgbcolor load def
  10090.     /_currentrgbcolor
  10091.         /currentrgbcolor load def
  10092.     Adobe_cmykcolor begin
  10093.     Adobe_cmykcolor
  10094.         {
  10095.         dup xcheck
  10096.             {
  10097.             bind
  10098.             } if
  10099.         pop pop
  10100.         } forall
  10101.     end
  10102.     end
  10103.     Adobe_cmykcolor begin
  10104.     } ifelse
  10105. } def
  10106. /terminate            % - terminate -
  10107. {
  10108. currentdict Adobe_cmykcolor eq
  10109.     {
  10110.     end
  10111.     } if
  10112. } def
  10113. /setcmykcolor        % cyan magenta yellow black setcmykcolor -
  10114. {
  10115. 1 sub 4 1 roll
  10116. 3
  10117.     {
  10118.     3 index add neg dup 0 lt
  10119.         {
  10120.         pop 0
  10121.         } if
  10122.     3 1 roll
  10123.     } repeat
  10124. Adobe_cmykcolor_vars /_setrgbcolor get exec
  10125. pop
  10126. } def 
  10127. /currentcmykcolor    % - currentcmykcolor cyan magenta yellow black
  10128. {
  10129. Adobe_cmykcolor_vars /_currentrgbcolor get exec
  10130. 3
  10131.     {
  10132.     1 sub neg 3 1 roll
  10133.     } repeat
  10134. 0
  10135. } def
  10136. currentdict readonly pop end
  10137. setpacking
  10138. %%EndResource
  10139. %%BeginResource: procset Adobe_cshow 1.1 0
  10140. %%Title: (cshow Operator)
  10141. %%Version: 1.1 
  10142. %%CreationDate: (1/23/89) ()
  10143. %%Copyright: ((C) 1987-1990 Adobe Systems Incorporated All Rights Reserved)
  10144. currentpacking true setpacking
  10145. userdict /Adobe_cshow 3 dict dup begin put
  10146. /initialize            % - initialize -
  10147. {
  10148. /cshow where
  10149.     {
  10150.     pop
  10151.     }
  10152.     {
  10153.     userdict /Adobe_cshow_vars 1 dict dup begin put
  10154.     /_cshow        % - _cshow proc
  10155.         {} def
  10156.     Adobe_cshow begin
  10157.     Adobe_cshow
  10158.         {
  10159.         dup xcheck
  10160.             {
  10161.             bind
  10162.             } if
  10163.         userdict 3 1 roll put
  10164.         } forall
  10165.     end
  10166.     end
  10167.     } ifelse
  10168. } def
  10169. /terminate            % - terminate -
  10170. {
  10171. } def
  10172. /cshow                % proc string cshow -
  10173. {
  10174. exch
  10175. Adobe_cshow_vars
  10176.     exch /_cshow
  10177.     exch put
  10178.     {
  10179.     0 0 Adobe_cshow_vars /_cshow get exec
  10180.     } forall
  10181. } def
  10182. currentdict readonly pop end
  10183. setpacking
  10184. %%EndResource
  10185. %%BeginResource: procset Adobe_customcolor 1.0 0
  10186. %%Title: (Custom Color Operators)
  10187. %%Version: 1.0 
  10188. %%CreationDate: (5/9/88) ()
  10189. %%Copyright: ((C) 1987-1990 Adobe Systems Incorporated All Rights Reserved)
  10190. currentpacking true setpacking
  10191. userdict /Adobe_customcolor 5 dict dup begin put
  10192. /initialize            % - initialize -
  10193. {
  10194. /setcustomcolor where
  10195.     {
  10196.     pop
  10197.     }
  10198.     {
  10199.     Adobe_customcolor begin
  10200.     Adobe_customcolor
  10201.         {
  10202.         dup xcheck
  10203.             {
  10204.             bind
  10205.             } if
  10206.         pop pop
  10207.         } forall
  10208.     end
  10209.     Adobe_customcolor begin
  10210.     } ifelse
  10211. } def
  10212. /terminate            % - terminate -
  10213. {
  10214. currentdict Adobe_customcolor eq
  10215.     {
  10216.     end
  10217.     } if
  10218. } def
  10219. /findcmykcustomcolor    % cyan magenta yellow black name findcmykcustomcolor object
  10220. {
  10221. 5 packedarray
  10222. }  def
  10223. /setcustomcolor        % object tint setcustomcolor -
  10224. {
  10225. exch
  10226. aload pop pop
  10227. 4
  10228.     {
  10229.     4 index mul 4 1 roll
  10230.     } repeat
  10231. 5 -1 roll pop
  10232. setcmykcolor
  10233. } def
  10234. /setoverprint        % boolean setoverprint -
  10235. {
  10236. pop
  10237. } def
  10238. currentdict readonly pop end
  10239. setpacking
  10240. %%EndResource
  10241. %%BeginResource: procset Adobe_typography_AI3 1.1 0
  10242. %%Title: (Typography Operators)
  10243. %%Version: 1.0 
  10244. %%CreationDate:(5/31/90) ()
  10245. %%Copyright: ((C) 1987-1990 Adobe Systems Incorporated All Rights Reserved)
  10246. currentpacking true setpacking
  10247. userdict /Adobe_typography_AI3 47 dict dup begin put
  10248. /initialize            % - initialize -
  10249. {
  10250. /TZ
  10251.  where
  10252.     {
  10253.     pop
  10254.     }
  10255.     {
  10256.     Adobe_typography_AI3 begin
  10257.     Adobe_typography_AI3
  10258.         {
  10259.         dup xcheck
  10260.             {
  10261.             bind
  10262.             } if
  10263.         pop pop
  10264.         } forall
  10265.     end
  10266.     Adobe_typography_AI3 begin
  10267.     } ifelse
  10268. } def
  10269. /terminate            % - terminate -
  10270. {
  10271. currentdict Adobe_typography_AI3 eq
  10272.     {
  10273.     end
  10274.     } if
  10275. } def
  10276. % [ number value stream [ array for encoding modification ] modifyEncoding ==> [ modified array ]
  10277. /modifyEncoding
  10278. {
  10279.     /_tempEncode exch ddef
  10280.     
  10281.     % pointer for sequential encodings
  10282.     /_pntr 0 ddef
  10283.     
  10284.     {
  10285.         % get bottom object
  10286.         counttomark -1 roll
  10287.         % is it a mark ?
  10288.         dup type dup /marktype eq         
  10289.         {
  10290.             % exit
  10291.             pop pop exit
  10292.         }
  10293.         {
  10294.             % ... object ... type ....
  10295.             % insert if a nametype
  10296.             /nametype eq
  10297.             {
  10298.                 % insert the name at _pntr and increment pointer
  10299.                 _tempEncode /_pntr dup load dup 3 1 roll 1 add ddef 3 -1 roll
  10300.                 put
  10301.             }
  10302.             {
  10303.                 % reset _pntr if it's a number
  10304.                 /_pntr exch ddef                    
  10305.             }
  10306.             ifelse
  10307.         }
  10308.         ifelse
  10309.     }
  10310.     loop    
  10311.     
  10312.     % return the modified encoding
  10313.     _tempEncode
  10314. }
  10315. def
  10316. /TE    % Set std platform encoding     % (encoding pairs) TE -
  10317. {
  10318.     StandardEncoding 256 array copy modifyEncoding 
  10319.     /_nativeEncoding exch def
  10320. } def
  10321. % re-define font
  10322. % expected arguments
  10323. % for 'normal fonts : 
  10324. % [ /_Helvetica-Bold/Helvetica-Bold direction fontScript defaultEncoding TZ
  10325. %
  10326. % for cartographic, pictographic, and expert fonts :
  10327. % [ ... number value stream ... /_Symbol/Symbol 
  10328. %    direction fontScript defaultEncoding TZ
  10329. % for blended fonts w/ default encoding :
  10330. % [ /_AdobeSans_20ULig1XCond-Bold/AdobeSans 
  10331. %    direction fontScript defaultEncoding [ w0 w1 ... wn ] TZ
  10332. % for blended fonts w/ special encoding :
  10333. % [ ... number value stream ... /_AdobeSans_20ULig1XCond/AdobeSans 
  10334. %    direction fontScript defaultEncoding [ w0 w1 ... wn ] TZ
  10335. /TZ        
  10336. {
  10337.     % set weight vector (if present)
  10338.     dup type /arraytype eq {/_wv exch def} {/_wv 0 def} ifelse 
  10339.     % platform dependent coding flag
  10340.     /_useNativeEncoding exch def
  10341.     % pop fontScript & direction
  10342.     pop pop
  10343.     
  10344.     % create a new dictionary with length
  10345.     % equal to original dictionary length + 2
  10346.     % copy all the key/value pairs except FID
  10347.     % call makeblended font with the weight values if _wv is an array
  10348.     findfont _wv type /arraytype eq {_wv makeblendedfont} if dup length 2 add dict
  10349.     
  10350.     begin
  10351.     
  10352.         % copy all the values but the FID
  10353.         % into the new dictionary
  10354.         mark exch
  10355.         {
  10356.             1 index /FID ne { def } if cleartomark mark
  10357.         }
  10358.         forall
  10359.         % discard last mark
  10360.         pop
  10361.         
  10362.         % define FontName
  10363.         /FontName exch def
  10364.         
  10365.         % if no re-encoding stream is present
  10366.         % then if the base encoding vector of the font
  10367.         % is the same as StandardEncoding
  10368.         % and the use platform encoding flag is true
  10369.         % then install AI platform encoding
  10370.         % else leave the base encoding in effect
  10371.         counttomark 0 eq
  10372.         {
  10373.             1 _useNativeEncoding eq
  10374.             {
  10375.                 /Encoding _nativeEncoding def
  10376.             }
  10377.             if
  10378.             % clean up
  10379.             cleartomark
  10380.         }
  10381.         {    
  10382.             % custom encoding to be done
  10383.             % start off with a copy of the font's standard encoding
  10384.             /Encoding load 256 array copy 
  10385.             modifyEncoding /Encoding exch def
  10386.         }
  10387.         ifelse        
  10388.         FontName currentdict
  10389.     end
  10390.     
  10391.     % register the new font
  10392.     definefont pop
  10393. }
  10394. def
  10395. % text painting operators
  10396. /tr                    % string tr ax ay string 
  10397. {
  10398. _ax _ay 3 2 roll
  10399. } def
  10400. /trj                % string trj cx cy fillchar ax ay string 
  10401. {
  10402. _cx _cy _sp _ax _ay 6 5 roll
  10403. } def
  10404. /a0
  10405. {
  10406. /Tx    % text                            % textString Tx -
  10407.     {
  10408.     dup 
  10409.     currentpoint 3 2 roll
  10410.     tr _psf
  10411.     newpath moveto
  10412.     tr _ctm _pss
  10413.     } ddef
  10414. /Tj    % justified text                % textString Tj -
  10415.     {
  10416.     dup
  10417.     currentpoint 3 2 roll
  10418.     trj _pjsf
  10419.     newpath moveto
  10420.     trj _ctm _pjss
  10421.     } ddef
  10422.     
  10423. } def
  10424. /a1
  10425. {
  10426. /Tx    % text                            % textString Tx -
  10427.     {
  10428.     dup currentpoint 4 2 roll gsave
  10429.     dup currentpoint 3 2 roll
  10430.     tr _psf
  10431.     newpath moveto
  10432.     tr _ctm _pss
  10433.     gresto°¿ re 3 1 roll moveto tr sp
  10434.     } ddef
  10435. /Tj    % justified text                % textString Tj -
  10436.     {
  10437.     dup currentpoint 4 2 roll gsave
  10438.     dup currentpoint 3 2 roll
  10439.     trj _pjsf
  10440.     newpath moveto
  10441.     trj _ctm _pjss
  10442.     grestore 3 1 roll moveto tr sp
  10443.     } ddef
  10444.     
  10445. } def
  10446. /e0
  10447. {
  10448. /Tx    % text                            % textString Tx -
  10449.     {
  10450.     tr _psf
  10451.     } ddef
  10452. /Tj    % justified text                % textString Tj -
  10453.     {
  10454.     trj _pjsf
  10455.     } ddef
  10456. } def
  10457. /e1
  10458. {
  10459. /Tx    % text                            % textString Tx -
  10460.     {
  10461.     dup currentpoint 4 2 roll gsave 
  10462.     tr _psf  
  10463.     grestore 3 1 roll moveto tr sp 
  10464.     } ddef
  10465. /Tj    % justified text                % textString Tj -
  10466.     {
  10467.     dup currentpoint 4 2 roll gsave 
  10468.     trj _pjsf
  10469.     grestore 3 1 roll moveto tr sp 
  10470.     } ddef
  10471. } def
  10472. /i0
  10473. {
  10474. /Tx    % text                            % textString Tx -
  10475.     {
  10476.     tr sp
  10477.     } ddef
  10478. /Tj    % justified text                % textString Tj -
  10479.     {
  10480.     trj jsp
  10481.     } ddef
  10482. } def
  10483. /i1
  10484. {
  10485. W N
  10486. } def
  10487. /o0
  10488. {
  10489. /Tx    % text                            % textString Tx -
  10490.     {
  10491.     tr sw rmoveto
  10492.     } ddef
  10493. /Tj    % justified text                % textString Tj -
  10494.     {
  10495.     trj swj rmoveto
  10496.     } ddef
  10497. } def
  10498. /r0
  10499. {
  10500. /Tx    % text                            % textString Tx -
  10501.     {
  10502.     tr _ctm _pss
  10503.     } ddef
  10504. /Tj    % justified text                % textString Tj -
  10505.     {
  10506.     trj _ctm _pjss
  10507.     } ddef
  10508. } def
  10509. /r1
  10510. {
  10511. /Tx    % text                            % textString Tx -
  10512.     {
  10513.     dup currentpoint 4 2 roll currentpoint gsave newpath moveto
  10514.     tr _ctm _pss 
  10515.     grestore 3 1 roll moveto tr sp 
  10516.     } ddef
  10517. /Tj    % justified text                % textString Tj -
  10518.     {
  10519.     dup currentpoint 4 2 roll currentpoint gsave newpath moveto
  10520.     trj _ctm _pjss
  10521.     grestore 3 1 roll moveto tr sp 
  10522.     } ddef
  10523. } def
  10524. % font operators
  10525. % Binding
  10526. /To    % begin text                     % bindType To -
  10527. {
  10528.     pop _ctm currentmatrix pop
  10529. } def
  10530. /TO    % end text                    % TO -
  10531. {
  10532.     Te _ctm setmatrix newpath
  10533. } def
  10534. % Text paths
  10535. /Tp    % begin text path                % a b c d tx ty startPt Tp -
  10536. {
  10537.     pop _tm astore pop _ctm setmatrix 
  10538.     _tDict begin /W {} def /h {} def
  10539. } def
  10540. /TP    % end text path                    % TP -
  10541. {
  10542.     end
  10543.     iTm 0 0 moveto
  10544. } def
  10545. % Render mode & matrix operators
  10546. /Tr    % begin render                    % render Tr - 
  10547. {
  10548.     _render 3 le {currentpoint newpath moveto} if
  10549.     dup 8 eq {pop 0} {dup 9 eq {pop 1} if} ifelse
  10550.     dup /_render exch ddef
  10551.     _renderStart exch get load exec
  10552. } def
  10553. /iTm % internal set text matrix        % - iTm -    (uses _tm as implicit argument)
  10554. {
  10555. _ctm setmatrix _tm concat 0 _rise translate _hs 1 scale
  10556. } def
  10557. /Tm % set text matrix                % a b c d tx ty Tm -
  10558. {
  10559. _tm astore pop iTm 0 0 moveto
  10560. } def
  10561. /Td % translate text matrix         % tx ty Td -
  10562. {
  10563. _mtx translate _tm _tm concatmatrix pop iTm 0 0 moveto
  10564. } def
  10565. /Te    % end render                    % - Te -
  10566. {
  10567.     _render -1 eq {} {_renderEnd _render get dup null ne {load exec} {pop} ifelse} ifelse
  10568.     /_render -1 ddef
  10569. } def
  10570. % Attributes
  10571. /Ta    % set alignment                    % alignment Ta -
  10572. {
  10573. pop
  10574. } def
  10575. /Tf    % set font name and size        % fontname size Tf -
  10576. {
  10577. dup 1000 div /_fScl exch ddef
  10578. exch findfont exch scalefont setfont
  10579. } def
  10580. /Tl    % set leading                    % leading paragraphLeading Tl -
  10581. {
  10582. pop
  10583. 0 exch _leading astore pop
  10584. } def
  10585. /Tt    % set user tracking                % userTracking Tt -
  10586. {
  10587. pop
  10588. } def
  10589. /TW % set word spacing                % minSpace optSpace maxSpace TW -
  10590. {
  10591. 3 npop
  10592. } def
  10593. /Tw    % set computed word spacing        % wordSpace Tw
  10594. {
  10595. /_cx exch ddef
  10596. } def
  10597. /TC % set character spacing            % minSpace optSpace maxSpace TC -
  10598. {
  10599. 3 npop
  10600. } def
  10601. /Tc    % set computed char spacing     % charSpace Tc -
  10602. {
  10603. /_ax exch ddef
  10604. } def
  10605. /Ts % set super/subscripting (rise)    % rise Ts -
  10606. {
  10607. /_rise exch ddef
  10608. currentpoint
  10609. iTm
  10610. moveto
  10611. } def
  10612. /Ti    % set indentation                % firstStartIndent otherStartIndent stopIndent Ti -
  10613. {
  10614. 3 npop
  10615. } def
  10616. /Tz % set horizontal scaling        % scalePercent Tz -
  10617. {
  10618. 100 div /_hs exch ddef
  10619. iTm
  10620. } def
  10621. /TA % set pairwise kerning            % autoKern TA -
  10622.                                     %    autoKern = 0 -> no pair kerning
  10623.                                     %             = 1 -> automatic pair kerning
  10624. {
  10625. pop
  10626. } def
  10627. /Tq % set hanging quotes            % hangingQuotes Tq -
  10628.                                     %    hangingQuotes     = 0 -> no hanging quotes
  10629.                                     %                     = 1 -> hanging quotes
  10630. {
  10631. pop
  10632. } def
  10633. % Text Bodies
  10634. /TX {pop} def
  10635. %/Tx    % non-justified text            % textString Tx -
  10636. %/Tj    % justified text                % textString Tj -
  10637. /Tk    % kern                            % autoKern kernValue Tk -
  10638.                                     %      autoKern = 0 -> manual kern, = 1 -> auto kern
  10639.                                     %    kernValue = kern value in em/1000 space
  10640. {
  10641. exch pop _fScl mul neg 0 rmoveto
  10642. } def
  10643. /TK    % non-printing kern                % autoKern kernValue TK -
  10644. {
  10645. 2 npop
  10646. } def
  10647. /T* % carriage return & line feed    % - T* -
  10648. {
  10649. _leading aload pop neg Td
  10650. } def
  10651. /T*- % carriage return & negative line feed    % - T*- -
  10652. {
  10653. _leading aload pop Td
  10654. } def
  10655. /T-    % print a discretionary hyphen    % - T- -
  10656. {
  10657. _hyphen Tx
  10658. } def
  10659. /T+    % discretionary hyphen hyphen    % - T+ -
  10660. {} def
  10661. /TR    % reset pattern matrix             % a b c d tx ty TR -
  10662. {
  10663. _ctm currentmatrix pop     
  10664. _tm astore pop 
  10665. iTm 0 0 moveto 
  10666. } def
  10667. /TS    % special chars                    % textString justified TS -
  10668. {
  10669. 0 eq {Tx} {Tj} ifelse
  10670. } def
  10671. currentdict readonly pop end
  10672. setpacking
  10673. %%EndResource
  10674. %%BeginResource: procset Adobe_IllustratorA_AI3 1.0 2
  10675. %%Title: (Adobe Illustrator (R) Version 3.0 Abbreviated Prolog)
  10676. %%Version: 1.0 
  10677. %%CreationDate: (7/22/89) ()
  10678. %%Copyright: ((C) 1987-1990 Adobe Systems Incorporated All Rights Reserved)
  10679. currentpacking true setpacking
  10680. userdict /Adobe_IllustratorA_AI3 61 dict dup begin put
  10681. % initialization
  10682. /initialize                % - initialize -
  10683. {
  10684. % 47 vars, but leave slack of 10 entries for custom Postscript fragments
  10685. userdict /Adobe_IllustratorA_AI3_vars 57 dict dup begin put
  10686. % paint operands
  10687. /_lp /none def
  10688. /_pf {} def
  10689. /_ps {} def
  10690. /_psf {} def
  10691. /_pss {} def
  10692. /_pjsf {} def
  10693. /_pjss {} def
  10694. /_pola 0 def
  10695. /_doClip 0 def
  10696. % paint operators
  10697. /cf    currentflat def    % - cf flatness
  10698. % typography operands
  10699. /_tm matrix def
  10700. /_renderStart [/e0 /r0 /a0 /o0 /e1 /r1 /a1 /i0] def 
  10701. /_renderEnd [null null null null /i1 /i1 /i1 /i1] def
  10702. /_render -1 def
  10703. /_rise 0 def
  10704. /_ax 0 def            % x character spacing    (_ax, _ay, _cx, _cy follows awidthshow naming convention)
  10705. /_ay 0 def            % y character spacing
  10706. /_cx 0 def            % x word spacing
  10707. /_cy 0 def            % y word spacing
  10708. /_leading [0 0] def
  10709. /_ctm matrix def
  10710. /_mtx matrix def
  10711. /_sp 16#020 def
  10712. /_hyphen (-) def
  10713. /_fScl 0 def
  10714. /_cnt 0 def
  10715. /_hs 1 def
  10716. /_nativeEncoding 0 def
  10717. /_useNativeEncoding 0 def
  10718. /_tempEncode 0 def
  10719. /_pntr 0 def
  10720. /_tDict 2 dict def
  10721. % typography operators
  10722. /Tx {} def
  10723. /Tj {} def
  10724. % compound path operators
  10725. /CRender {} def
  10726. % printing
  10727. /_AI3_savepage {} def
  10728. % color operands
  10729. /_gf null def
  10730. /_cf 4 array def
  10731. /_if null def
  10732. /_of false def
  10733. /_fc {} def
  10734. /_gs null def
  10735. /_cs 4 array def
  10736. /_is null def
  10737. /_os false def
  10738. /_sc {} def
  10739. /_i null def
  10740. Adobe_IllustratorA_AI3 begin
  10741. Adobe_IllustratorA_AI3
  10742.     {
  10743.     dup xcheck
  10744.         {
  10745.         bind
  10746.         } if
  10747.     pop pop
  10748.     } forall
  10749. end
  10750. end
  10751. Adobe_IllustratorA_AI3 begin
  10752. Adobe_IllustratorA_AI3_vars begin
  10753. newpath
  10754. } def
  10755. /terminate                % - terminate -
  10756. {
  10757. end
  10758. end
  10759. } def
  10760. % definition operators
  10761. /_                    % - _ null
  10762. null def
  10763. /ddef                % key value ddef -
  10764. {
  10765. Adobe_IllustratorA_AI3_vars 3 1 roll put
  10766. } def
  10767. /xput                % key value literal xput -
  10768. {
  10769. dup load dup length exch maxlength eq
  10770.     {
  10771.     dup dup load dup
  10772.     length 2 mul dict copy def
  10773.     } if
  10774. load begin def end
  10775. } def
  10776. /npop                % integer npop -
  10777. {
  10778.     {
  10779.     pop
  10780.     } repeat
  10781. } def
  10782. % marking operators
  10783. /sw                    % ax ay string sw x y 
  10784. {
  10785. dup length exch stringwidth
  10786. exch 5 -1 roll 3 index 1 sub mul add
  10787. 4 1 roll 3 1 roll 1 sub mul add
  10788. } def
  10789. /swj                % cx cy fillchar ax ay string swj x y
  10790. {
  10791. dup 4 1 roll
  10792. dup length exch stringwidth 
  10793. exch 5 -1 roll 3 index 1 sub mul add
  10794. 4 1 roll 3 1 roll 1 sub mul add 
  10795. 6 2 roll /_cnt 0 ddef
  10796. {1 index eq {/_cnt _cnt 1 add ddef} if} forall pop
  10797. exch _cnt mul exch _cnt mul 2 index add 4 1 roll 2 index add 4 1 roll pop pop
  10798. } def
  10799. /ss                    % ax ay string matrix ss -
  10800. {
  10801. 4 1 roll
  10802.     {                % matrix ax ay char 0 0 {proc} -
  10803.     2 npop 
  10804.     (0) exch 2 copy 0 exch put pop
  10805.     gsave
  10806.     false charpath currentpoint
  10807.     4 index setmatrix
  10808.     stroke
  10809.     grestore
  10810.     moveto
  10811.     2 copy rmoveto
  10812.     } exch cshow
  10813. 3 npop
  10814. } def
  10815. /jss                % cx cy fillchar ax ay string matrix jss -
  10816. {
  10817. 4 1 roll
  10818.     {                % cx cy fillchar matrix ax ay char 0 0 {proc} -   
  10819.     2 npop 
  10820.     (0) exch 2 copy 0 exch put 
  10821.     gsave
  10822.     _sp eq 
  10823.         {
  10824.         exch 6 index 6 index 6 index 5 -1 roll widthshow  
  10825.         currentpoint
  10826.         }
  10827.         {
  10828.         false charpath currentpoint
  10829.         4 index setmatrix stroke
  10830.         }ifelse
  10831.     grestore
  10832.     moveto
  10833.     2 copy rmoveto
  10834.     } exch cshow
  10835. 6 npop
  10836. } def
  10837. % path operators
  10838. /sp                    % ax ay string sp -
  10839. {
  10840.     {
  10841.     2 npop (0) exch
  10842.     2 copy 0 exch put pop
  10843.     false charpath
  10844.     2 copy rmoveto
  10845.     } exch cshow
  10846. 2 npop
  10847. } def
  10848. /jsp                    % cx cy fillchar ax ay string jsp -
  10849. {
  10850.     {                    % cx cy fillchar ax ay char 0 0 {proc} -
  10851.     2 npop 
  10852.     (0) exch 2 copy 0 exch put 
  10853.     _sp eq 
  10854.         {
  10855.         exch 5 index 5 index 5 index 5 -1 roll widthshow  
  10856.         }
  10857.         {
  10858.         false charpat°¿ h
  10859.         }ifelse
  10860.     2 copy rmoveto
  10861.     } exch cshow
  10862. 5 npop
  10863. } def
  10864. % path construction operators
  10865. /pl                % x y pl x y
  10866. {
  10867. transform
  10868. 0.25 sub round 0.25 add exch
  10869. 0.25 sub round 0.25 add exch
  10870. itransform
  10871. } def
  10872. /setstrokeadjust where
  10873.     {
  10874.     pop true setstrokeadjust
  10875.     /c                % x1 y1 x2 y2 x3 y3 c -
  10876.     {
  10877.     curveto
  10878.     } def
  10879.     /C
  10880.     /c load def
  10881.     /v                % x2 y2 x3 y3 v -
  10882.     {
  10883.     currentpoint 6 2 roll curveto
  10884.     } def
  10885.     /V
  10886.     /v load def
  10887.     /y                % x1 y1 x2 y2 y -
  10888.     {
  10889.     2 copy curveto
  10890.     } def
  10891.     /Y
  10892.     /y load def
  10893.     /l                % x y l -
  10894.     {
  10895.     lineto
  10896.     } def
  10897.     /L
  10898.     /l load def
  10899.     /m                % x y m -
  10900.     {
  10901.     moveto
  10902.     } def
  10903.     }
  10904.     {%else
  10905.     /c
  10906.     {
  10907.     pl curveto
  10908.     } def
  10909.     /C
  10910.     /c load def
  10911.     /v
  10912.     {
  10913.     currentpoint 6 2 roll pl curveto
  10914.     } def
  10915.     /V
  10916.     /v load def
  10917.     /y
  10918.     {
  10919.     pl 2 copy curveto
  10920.     } def
  10921.     /Y
  10922.     /y load def
  10923.     /l
  10924.     {
  10925.     pl lineto
  10926.     } def
  10927.     /L
  10928.     /l load def
  10929.     /m
  10930.     {
  10931.     pl moveto
  10932.     } def
  10933.     }ifelse
  10934. % graphic state operators
  10935. /d                    % array phase d -
  10936. {
  10937. setdash
  10938. } def
  10939. /cf    {} def            % - cf flatness
  10940. /i                    % flatness i -
  10941. {
  10942. dup 0 eq
  10943.     {
  10944.     pop cf
  10945.     } if
  10946. setflat
  10947. } def
  10948. /j                    % linejoin j -
  10949. {
  10950. setlinejoin
  10951. } def
  10952. /J                    % linecap J -
  10953. {
  10954. setlinecap
  10955. } def
  10956. /M                    % miterlimit M -
  10957. {
  10958. setmiterlimit
  10959. } def
  10960. /w                    % linewidth w -
  10961. {
  10962. setlinewidth
  10963. } def
  10964. % path painting operators
  10965. /H                    % - H -
  10966. {} def
  10967. /h                    % - h -
  10968. {
  10969. closepath
  10970. } def
  10971. /N                    % - N -
  10972. {
  10973. _pola 0 eq 
  10974.     {
  10975.     _doClip 1 eq {clip /_doClip 0 ddef} if 
  10976.     newpath
  10977.     } 
  10978.     {
  10979.     /CRender {N} ddef
  10980.     }ifelse
  10981. } def
  10982. /n                    % - n -
  10983. {N} def
  10984. /F                    % - F -
  10985. {
  10986. _pola 0 eq 
  10987.     {
  10988.     _doClip 1 eq 
  10989.         {
  10990.         gsave _pf grestore clip newpath /_lp /none ddef _fc 
  10991.         /_doClip 0 ddef
  10992.         }
  10993.         {
  10994.         _pf
  10995.         }ifelse
  10996.     } 
  10997.     {
  10998.     /CRender {F} ddef
  10999.     }ifelse
  11000. } def
  11001. /f                    % - f -
  11002. {
  11003. closepath
  11004. F
  11005. } def
  11006. /S                    % - S -
  11007. {
  11008. _pola 0 eq 
  11009.     {
  11010.     _doClip 1 eq 
  11011.         {
  11012.         gsave _ps grestore clip newpath /_lp /none ddef _sc 
  11013.         /_doClip 0 ddef
  11014.         }
  11015.         {
  11016.         _ps
  11017.         }ifelse
  11018.     } 
  11019.     {
  11020.     /CRender {S} ddef
  11021.     }ifelse
  11022. } def
  11023. /s                    % - s -
  11024. {
  11025. closepath
  11026. S
  11027. } def
  11028. /B                    % - B -
  11029. {
  11030. _pola 0 eq 
  11031.     {
  11032.     _doClip 1 eq     % F clears _doClip
  11033.     gsave F grestore 
  11034.         {
  11035.         gsave S grestore clip newpath /_lp /none ddef _sc
  11036.         /_doClip 0 ddef
  11037.         } 
  11038.         {
  11039.         S
  11040.         }ifelse
  11041.     }
  11042.     {
  11043.     /CRender {B} ddef
  11044.     }ifelse
  11045. } def
  11046. /b                    % - b -
  11047. {
  11048. closepath
  11049. B
  11050. } def
  11051. /W                    % - W -
  11052. {
  11053. /_doClip 1 ddef
  11054. } def
  11055. /*                    % - [string] * -
  11056. {
  11057. count 0 ne 
  11058.     {
  11059.     dup type (stringtype) eq {pop} if
  11060.     } if 
  11061. _pola 0 eq {newpath} if
  11062. } def
  11063. % group operators
  11064. /u                    % - u -
  11065. {} def
  11066. /U                    % - U -
  11067. {} def
  11068. /q                    % - q -
  11069. {
  11070. _pola 0 eq {gsave} if
  11071. } def
  11072. /Q                    % - Q -
  11073. {
  11074. _pola 0 eq {grestore} if
  11075. } def
  11076. /*u                    % - *u -
  11077. {
  11078. _pola 1 add /_pola exch ddef
  11079. } def
  11080. /*U                    % - *U -
  11081. {
  11082. _pola 1 sub /_pola exch ddef 
  11083. _pola 0 eq {CRender} if
  11084. } def
  11085. /D                    % polarized D -
  11086. {pop} def
  11087. /*w                    % - *w -
  11088. {} def
  11089. /*W                    % - *W -
  11090. {} def
  11091. % place operators
  11092. /`                    % matrix llx lly urx ury string ` -
  11093. {
  11094. /_i save ddef
  11095. 6 1 roll 4 npop
  11096. concat pop
  11097. userdict begin
  11098. /showpage {} def
  11099. 0 setgray
  11100. 0 setlinecap
  11101. 1 setlinewidth
  11102. 0 setlinejoin
  11103. 10 setmiterlimit
  11104. [] 0 setdash
  11105. newpath
  11106. 0 setgray
  11107. false setoverprint
  11108. } def
  11109. /~                    % - ~ -
  11110. {
  11111. end
  11112. _i restore
  11113. } def
  11114. % color operators
  11115. /O                    % flag O -
  11116. {
  11117. 0 ne
  11118. /_of exch ddef
  11119. /_lp /none ddef
  11120. } def
  11121. /R                    % flag R -
  11122. {
  11123. 0 ne
  11124. /_os exch ddef
  11125. /_lp /none ddef
  11126. } def
  11127. /g                    % gray g -
  11128. {
  11129. /_gf exch ddef
  11130. /_fc
  11131. _lp /fill ne
  11132.     {
  11133.     _of setoverprint
  11134.     _gf setgray
  11135.     /_lp /fill ddef
  11136.     } if
  11137. } ddef
  11138. /_pf
  11139. {
  11140. _fc
  11141. fill
  11142. } ddef
  11143. /_psf
  11144. {
  11145. _fc
  11146. ashow
  11147. } ddef
  11148. /_pjsf
  11149. {
  11150. _fc
  11151. awidthshow
  11152. } ddef
  11153. /_lp /none ddef
  11154. } def
  11155. /G                    % gray G -
  11156. {
  11157. /_gs exch ddef
  11158. /_sc
  11159. {
  11160. _lp /stroke ne
  11161.     {
  11162.     _os setoverprint
  11163.     _gs setgray
  11164.     /_lp /stroke ddef
  11165.     } if
  11166. } ddef
  11167. /_ps
  11168. {
  11169. _sc
  11170. stroke
  11171. } ddef
  11172. /_pss
  11173. {
  11174. _sc
  11175. ss
  11176. } ddef
  11177. /_pjss
  11178. {
  11179. _sc
  11180. jss
  11181. } ddef
  11182. /_lp /none ddef
  11183. } def
  11184. /k                    % cyan magenta yellow black k -
  11185. {
  11186. _cf astore pop
  11187. /_fc
  11188. {
  11189. _lp /fill ne
  11190.     {
  11191.     _of setoverprint
  11192.     _cf aload pop setcmykcolor
  11193.     /_lp /fill ddef
  11194.     } if
  11195. } ddef
  11196. /_pf
  11197. {
  11198. _fc
  11199. fill
  11200. } ddef
  11201. /_psf
  11202. {
  11203. _fc
  11204. ashow
  11205. } ddef
  11206. /_pjsf
  11207. {
  11208. _fc
  11209. awidthshow
  11210. } ddef
  11211. /_lp /none ddef
  11212. } def
  11213. /K                    % cyan magenta yellow black K -
  11214. {
  11215. _cs astore pop
  11216. /_sc
  11217. {
  11218. _lp /stroke ne
  11219.     {
  11220.     _os setoverprint
  11221.     _cs aload pop setcmykcolor
  11222.     /_lp /stroke ddef
  11223.     } if
  11224. } ddef
  11225. /_ps
  11226. {
  11227. _sc
  11228. stroke
  11229. } ddef
  11230. /_pss
  11231. {
  11232. _sc
  11233. ss
  11234. } ddef
  11235. /_pjss
  11236. {
  11237. _sc
  11238. jss
  11239. } ddef
  11240. /_lp /none ddef
  11241. } def
  11242. /x                    % cyan magenta yellow black name gray x -
  11243. {
  11244. /_gf exch ddef
  11245. findcmykcustomcolor
  11246. /_if exch ddef
  11247. /_fc
  11248. _lp /fill ne
  11249.     {
  11250.     _of setoverprint
  11251.     _if _gf 1 exch sub setcustomcolor
  11252.     /_lp /fill ddef
  11253.     } if
  11254. } ddef
  11255. /_pf
  11256. {
  11257. _fc
  11258. fill
  11259. } ddef
  11260. /_psf
  11261. {
  11262. _fc
  11263. ashow
  11264. } ddef
  11265. /_pjsf
  11266. {
  11267. _fc
  11268. awidthshow
  11269. } ddef
  11270. /_lp /none ddef
  11271. } def
  11272. /X                    % cyan magenta yellow black name gray X -
  11273. {
  11274. /_gs exch ddef
  11275. findcmykcustomcolor
  11276. /_is exch ddef
  11277. /_sc
  11278. {
  11279. _lp /stroke ne
  11280.     {
  11281.     _os setoverprint
  11282.     _is _gs 1 exch sub setcustomcolor
  11283.     /_lp /stroke ddef
  11284.     } if
  11285. } ddef
  11286. /_ps
  11287. {
  11288. _sc
  11289. stroke
  11290. } ddef
  11291. /_pss
  11292. {
  11293. _sc
  11294. ss
  11295. } ddef
  11296. /_pjss
  11297. {
  11298. _sc
  11299. jss
  11300. } ddef
  11301. /_lp /none ddef
  11302. } def
  11303. % locked object operator
  11304. /A                    % value A -
  11305. {
  11306. pop
  11307. } def
  11308. currentdict readonly pop end
  11309. setpacking
  11310. % annotate page operator
  11311. /annotatepage
  11312. {
  11313. } def
  11314. %%EndResource
  11315. %%EndProlog
  11316. %%BeginSetup
  11317. %%IncludeFont: Helvetica
  11318. Adobe_cmykcolor /initialize get exec
  11319. Adobe_cshow /initialize get exec
  11320. Adobe_customcolor /initialize get exec
  11321. Adobe_typography_AI3 /initialize get exec
  11322. Adobe_IllustratorA_AI3 /initialize get exec
  11323. [
  11324. 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis
  11325. /Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute
  11326. /egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde
  11327. /oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex
  11328. /udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls
  11329. /registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash
  11330. /.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef
  11331. /.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash
  11332. /questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef
  11333. /guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe
  11334. /endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide
  11335. /.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright
  11336. /fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand
  11337. /Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex
  11338. /Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex
  11339. /Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla
  11340. /hungarumlaut/ogonek/caron
  11341. TE
  11342. %AI3_BeginEncoding: _Helvetica Helvetica
  11343. [/_Helvetica/Helvetica 0 0 1 TZ
  11344. %AI3_EndEncoding TrueType
  11345. %%EndSetup
  11346. 0 A
  11347. u
  11348. 0 O
  11349. 0 g
  11350. 0 i 0 J 0 j 1 w 4 M []0 d
  11351. %AI3_Note:
  11352. 0 D
  11353. 337.2661 550.0119 m
  11354. 337.2661 568.0119 L
  11355. 265.2661 568.0119 L
  11356. 265.2661 550.0119 L
  11357. 337.2661 550.0119 L
  11358. f
  11359. 0 0.1 0 0 k
  11360. 0 R
  11361. 0 G
  11362. 0.75 w
  11363. 335.0161 552.2619 m
  11364. 335.0161 570.2619 L
  11365. 263.0161 570.2619 L
  11366. 263.0161 552.2619 L
  11367. 335.0161 552.2619 L
  11368. b
  11369. U
  11370. u
  11371. 0 g
  11372. 1 w
  11373. 337.2661 523.0119 m
  11374. 337.2661 541.0119 L
  11375. 265.2661 541.0119 L
  11376. 265.2661 523.0119 L
  11377. 337.2661 523.0119 L
  11378. f
  11379. 0 0.1 0 0 k
  11380. 0 R
  11381. 0 G
  11382. 0.75 w
  11383. 335.0161 525.2619 m
  11384. 335.0161 543.2619 L
  11385. 263.0161 543.2619 L
  11386. 263.0161 525.2619 L
  11387. 335.0161 525.2619 L
  11388. b
  11389. U
  11390. u
  11391. 0 g
  11392. 1 w
  11393. 337.2661 496.0119 m
  11394. 337.2661 514.0119 L
  11395. 265.2661 514.0119 L
  11396. 265.2661 496.0119 L
  11397. 337.2661 496.0119 L
  11398. f
  11399. 0 0.1 0 0 k
  11400. 0 R
  11401. 0 G
  11402. 0.75 w
  11403. 335.0161 498.2619 m
  11404. 335.0161 516.2619 L
  11405. 263.0161 516.2619 L
  11406. 263.0161 498.2619 L
  11407. 335.0161 498.2619 L
  11408. b
  11409. U
  11410. u
  11411. 0 g
  11412. 1 w
  11413. 337.2661 469.0119 m
  11414. 337.2661 487.0119 L
  11415. 265.2661 487.0119 L
  11416. 265.2661 469.0119 L
  11417. 337.2661 469.0119 L
  11418. f
  11419. 0 0.1 0 0 k
  11420. 0 R
  11421. 0 G
  11422. 0.75 w
  11423. 335.0161 471.2619 m
  11424. 335.0161 489.2619 L
  11425. 263.0161 489.2619 L
  11426. 263.0161 471.2619 L
  11427. 335.0161 471.2619 L
  11428. b
  11429. U
  11430. u
  11431. 0 g
  11432. 1 w
  11433. 337.2661 442.0119 m
  11434. 337.2661 460.0119 L
  11435. 265.2661 460.0119 L
  11436. 265.2661 442.0119 L
  11437. 337.2661 442.0119 L
  11438. f
  11439. 0 0.1 0 0 k
  11440. 0 R
  11441. 0 G
  11442. 0.75 w
  11443. 335.0161 444.2619 m
  11444. 335.0161 462.2619 L
  11445. 263.0161 462.2619 L
  11446. 263.0161 444.2619 L
  11447. 335.0161 444.2619 L
  11448. b
  11449. U
  11450. u
  11451. 0 g
  11452. 1 w
  11453. 337.2661 415.0119 m
  11454. 337.2661 433.0119 L
  11455. 265.2661 433.0119 L
  11456. 265.2661 415.0119 L
  11457. 337.2661 415.0119 L
  11458. f
  11459. 0 0.1 0 0 k
  11460. 0 R
  11461. 0 G
  11462. 0.75 w
  11463. 335.0161 417.2619 m
  11464. 335.0161 435.2619 L
  11465. 263.0161 435.2619 L
  11466. 263.0161 417.2619 L
  11467. 335.0161 417.2619 L
  11468. b
  11469. U
  11470. u
  11471. 0 g
  11472. 1 w
  11473. 337.2661 388.0119 m
  11474. 337.2661 406.0119 L
  11475. 265.2661 406.0119 L
  11476. 265.2661 388.0119 L
  11477. 337.2661 388.0119 L
  11478. f
  11479. 0 0.1 0 0 k
  11480. 0 R
  11481. 0 G
  11482. 0.75 w
  11483. 335.0161 390.2619 m
  11484. 335.0161 408.2619 L
  11485. 263.0161 408.2619 L
  11486. 263.0161 390.2619 L
  11487. 335.0161 390.2619 L
  11488. b
  11489. U
  11490. u
  11491. 0 g
  11492. 1 w
  11493. 337.2661 361.0119 m
  11494. 337.2661 379.0119 L
  11495. 265.2661 379.0119 L
  11496. 265.2661 361.0119 L
  11497. 337.2661 361.0119 L
  11498. f
  11499. 0 0.1 0 0 k
  11500. 0 R
  11501. 0 G
  11502. 0.75 w
  11503. 335.0161 363.2619 m
  11504. 335.0161 381.2619 L
  11505. 263.0161 381.26°¿˙19 L
  11506. 263.0161 363.2619 L
  11507. 335.0161 363.2619 L
  11508. b
  11509. U
  11510. u
  11511. 0 g
  11512. 1 w
  11513. 337.2661 334.0119 m
  11514. 337.2661 352.0119 L
  11515. 265.2661 352.0119 L
  11516. 265.2661 334.0119 L
  11517. 337.2661 334.0119 L
  11518. f
  11519. 0 0.1 0 0 k
  11520. 0 R
  11521. 0 G
  11522. 0.75 w
  11523. 335.0161 336.2619 m
  11524. 335.0161 354.2619 L
  11525. 263.0161 354.2619 L
  11526. 263.0161 336.2619 L
  11527. 335.0161 336.2619 L
  11528. b
  11529. U
  11530. u
  11531. 0 g
  11532. 1 w
  11533. 337.2661 307.0119 m
  11534. 337.2661 325.0119 L
  11535. 265.2661 325.0119 L
  11536. 265.2661 307.0119 L
  11537. 337.2661 307.0119 L
  11538. f
  11539. 0 0.1 0 0 k
  11540. 0 R
  11541. 0 G
  11542. 0.75 w
  11543. 335.0161 309.2619 m
  11544. 335.0161 327.2619 L
  11545. 263.0161 327.2619 L
  11546. 263.0161 309.2619 L
  11547. 335.0161 309.2619 L
  11548. b
  11549. U
  11550. u
  11551. 0 g
  11552. 1 w
  11553. 337.2661 280.0119 m
  11554. 337.2661 298.0119 L
  11555. 265.2661 298.0119 L
  11556. 265.2661 280.0119 L
  11557. 337.2661 280.0119 L
  11558. f
  11559. 0 0.1 0 0 k
  11560. 0 R
  11561. 0 G
  11562. 0.75 w
  11563. 335.0161 282.2619 m
  11564. 335.0161 300.2619 L
  11565. 263.0161 300.2619 L
  11566. 263.0161 282.2619 L
  11567. 335.0161 282.2619 L
  11568. b
  11569. U
  11570. u
  11571. 0 g
  11572. 1 w
  11573. 337.2661 253.0119 m
  11574. 337.2661 271.0119 L
  11575. 265.2661 271.0119 L
  11576. 265.2661 253.0119 L
  11577. 337.2661 253.0119 L
  11578. f
  11579. 0 0.1 0 0 k
  11580. 0 R
  11581. 0 G
  11582. 0.75 w
  11583. 335.0161 255.2619 m
  11584. 335.0161 273.2619 L
  11585. 263.0161 273.2619 L
  11586. 263.0161 255.2619 L
  11587. 335.0161 255.2619 L
  11588. b
  11589. U
  11590. u
  11591. 0 g
  11592. 1 w
  11593. 337.2661 226.0119 m
  11594. 337.2661 244.0119 L
  11595. 265.2661 244.0119 L
  11596. 265.2661 226.0119 L
  11597. 337.2661 226.0119 L
  11598. f
  11599. 0 0.1 0 0 k
  11600. 0 R
  11601. 0 G
  11602. 0.75 w
  11603. 335.0161 228.2619 m
  11604. 335.0161 246.2619 L
  11605. 263.0161 246.2619 L
  11606. 263.0161 228.2619 L
  11607. 335.0161 228.2619 L
  11608. b
  11609. U
  11610. 0 To
  11611. 1 0 0 1 297.5161 558.7619 0 Tp
  11612. TP
  11613. -10.417 0 Td
  11614. 0 Tr
  11615. 0 g
  11616. 1 w
  11617. /_Helvetica 8 Tf
  11618. 0 Ts
  11619. 100 Tz
  11620. 0 Tt
  11621. 0 TA
  11622. 0 0 5 TC
  11623. 100 100 200 TW
  11624. 0 0 0 Ti
  11625. 1 Ta
  11626. 0 Tq
  11627. 13.55 0 Tl
  11628. 0 Tc
  11629. 0 Tw
  11630. ('math') Tx
  11631. (\r) TX 
  11632. 10.417 -13.55 Td
  11633. (\r) TX 
  11634. -8.1953 -13.55 Td
  11635. ('      ') Tx
  11636. (\r) TX 
  11637. 8.1953 -13.55 Td
  11638. (\r) TX 
  11639. -9.0859 -13.55 Td
  11640. ('appl') Tx
  11641. (\r) TX 
  11642. 9.0859 -13.55 Td
  11643. (\r) TX 
  11644. -20.0127 -13.55 Td
  11645. ($00000000) Tx
  11646. (\r) TX 
  11647. 20.0127 -13.55 Td
  11648. (\r) TX 
  11649. -20.0127 -13.55 Td
  11650. ($00000000) Tx
  11651. (\r) TX 
  11652. 20.0127 -13.55 Td
  11653. (\r) TX 
  11654. -13.082 -13.55 Td
  11655. ('CODE') Tx
  11656. (\r) TX 
  11657. 13.082 -13.55 Td
  11658. (\r) TX 
  11659. -11.1182 -13.55 Td
  11660. ($0080) Tx
  11661. (\r) TX 
  11662. 11.1182 -13.55 Td
  11663. (\r) TX 
  11664. -10.6377 -13.55 Td
  11665. ('STR ') Tx
  11666. (\r) TX 
  11667. 10.6377 -13.55 Td
  11668. (\r) TX 
  11669. -11.1182 -13.55 Td
  11670. ($0080) Tx
  11671. (\r) TX 
  11672. 11.1182 -13.55 Td
  11673. (\r) TX 
  11674. -10.6377 -13.55 Td
  11675. ('STR ') Tx
  11676. (\r) TX 
  11677. 10.6377 -13.55 Td
  11678. (\r) TX 
  11679. -11.1182 -13.55 Td
  11680. ($0081) Tx
  11681. (\r) TX 
  11682. 11.1182 -13.55 Td
  11683. (\r) TX 
  11684. -10.6377 -13.55 Td
  11685. ('ICN#') Tx
  11686. (\r) TX 
  11687. 10.6377 -13.55 Td
  11688. (\r) TX 
  11689. -11.1182 -13.55 Td
  11690. ($0080) Tx 
  11691. (\r) TX 
  11692. TO
  11693. 0 To
  11694. 1 0 0 1 253.0347 558.7475 0 Tp
  11695. TP
  11696. -57.3496 0 Td
  11697. 0 Tr
  11698. 2 Ta
  11699. (componentType) Tx
  11700. (\r) TX 
  11701. 57.3496 -13.55 Td
  11702. (\r) TX 
  11703. -71.5801 -13.55 Td
  11704. (componentSubType) Tx
  11705. (\r) TX 
  11706. 71.5801 -13.55 Td
  11707. (\r) TX 
  11708. -86.6836 -13.55 Td
  11709. (componentManufacturer) Tx
  11710. (\r) TX 
  11711. 86.6836 -13.55 Td
  11712. (\r) TX 
  11713. -59.125 -13.55 Td
  11714. (componentFlags) Tx
  11715. (\r) TX 
  11716. 59.125 -13.55 Td
  11717. (\r) TX 
  11718. -78.2344 -13.55 Td
  11719. (componentFlagsMask) Tx
  11720. (\r) TX 
  11721. 78.2344 -13.55 Td
  11722. (\r) TX 
  11723. -90.6855 -13.55 Td
  11724. (component rsrcSpec type) Tx
  11725. (\r) TX 
  11726. 90.6855 -13.55 Td
  11727. (\r) TX 
  11728. -83.5664 -13.55 Td
  11729. (component rsrcSpec ID) Tx
  11730. (\r) TX 
  11731. 83.5664 -13.55 Td
  11732. (\r) TX 
  11733. -112.0176 -13.55 Td
  11734. (componentName rsrcSpec type) Tx
  11735. (\r) TX 
  11736. 112.0176 -13.55 Td
  11737. (\r) TX 
  11738. -104.8984 -13.55 Td
  11739. (componentName rsrcSpec ID) Tx
  11740. (\r) TX 
  11741. 104.8984 -13.55 Td
  11742. (\r) TX 
  11743. -104.0254 -13.55 Td
  11744. (componentInfo rsrcSpec type) Tx
  11745. (\r) TX 
  11746. 104.0254 -13.55 Td
  11747. (\r) TX 
  11748. -96.9062 -13.55 Td
  11749. (componentInfo rsrcSpec ID) Tx
  11750. (\r) TX 
  11751. 96.9062 -13.55 Td
  11752. (\r) TX 
  11753. -105.8027 -13.55 Td
  11754. (componentIcon rsrcSpec type) Tx
  11755. (\r) TX 
  11756. 105.8027 -13.55 Td
  11757. (\r) TX 
  11758. -98.6836 -13.55 Td
  11759. (componentIcon rsrcSpec ID) Tx
  11760. (\r) TX 
  11761. 98.6836 -13.55 Td
  11762. (\r) TX 
  11763. TO
  11764. 0 R
  11765. 0 G
  11766. 0.5 w
  11767. 339.5161 561.2619 m
  11768. 353.0161 561.2619 l
  11769. 353.0161 453.2619 l
  11770. 339.5161 453.2619 l
  11771. S
  11772. 353.5161 507.2619 m
  11773. 366.5161 507.2619 l
  11774. S
  11775. u
  11776. 338.7661 425.5119 m
  11777. 352.2661 425.5119 l
  11778. 352.2661 398.5119 l
  11779. 338.7661 398.5119 l
  11780. S
  11781. 352.2661 412.0119 m
  11782. 365.2661 412.0119 l
  11783. S
  11784. U
  11785. u
  11786. 339.5161 370.2619 m
  11787. 353.0161 370.2619 l
  11788. 353.0161 343.2619 l
  11789. 339.5161 343.2619 l
  11790. S
  11791. 353.0161 356.7619 m
  11792. 366.0161 356.7619 l
  11793. S
  11794. U
  11795. u
  11796. 339.5161 315.2619 m
  11797. 353.0161 315.2619 l
  11798. 353.0161 288.2619 l
  11799. 339.5161 288.2619 l
  11800. S
  11801. 353.0161 301.7619 m
  11802. 366.0161 301.7619 l
  11803. S
  11804. U
  11805. u
  11806. 339.5161 261.7619 m
  11807. 353.0161 261.7619 l
  11808. 353.0161 234.7619 l
  11809. 339.5161 234.7619 l
  11810. S
  11811. 353.0161 248.2619 m
  11812. 366.0161 248.2619 l
  11813. S
  11814. U
  11815. 0 To
  11816. 1 0 0 1 375.5161 503.7619 0 Tp
  11817. TP
  11818. 0 Tr
  11819. 0 O
  11820. 0 g
  11821. 1 w
  11822. 0 Ta
  11823. (Component description) Tx
  11824. (\r) TX 
  11825. T*
  11826. (\r) TX 
  11827. T*
  11828. (\r) TX 
  11829. T*
  11830. (\r) TX 
  11831. T*
  11832. (\r) TX 
  11833. T*
  11834. (\r) TX 
  11835. T*
  11836. (\r) TX 
  11837. T*
  11838. (Component code resource) Tx
  11839. (\r) TX 
  11840. T*
  11841. (\r) TX 
  11842. T*
  11843. (\r) TX 
  11844. T*
  11845. (\r) TX 
  11846. T*
  11847. ("Math Component") Tx
  11848. (\r) TX 
  11849. T*
  11850. (\r) TX 
  11851. T*
  11852. (\r) TX 
  11853. T*
  11854. (\r) TX 
  11855. T*
  11856. ("This component provides) Tx
  11857. (\r) TX 
  11858. 0 -9 Td
  11859. 9 0 Tl
  11860. (simple math services.") Tx
  11861. (\r) TX 
  11862. T*
  11863. (\r) TX 
  11864. T*
  11865. (\r) TX 
  11866. TO
  11867. u
  11868. u
  11869. 0 R
  11870. 0 G
  11871. 2 j 0.5 w
  11872. 397.7613 241.0167 m
  11873. 397.7613 255.6569 L
  11874. 381.6811 255.6569 L
  11875. 381.6811 241.0167 L
  11876. 397.7613 241.0167 L
  11877. s
  11878. 0 j 2 w
  11879. 389.7212 248.3368 m
  11880. S
  11881. U
  11882. 0 O
  11883. 0 g
  11884. 1 w
  11885. 397.7613 255.6569 m
  11886. 398.7513 254.6669 l
  11887. 398.7513 239.6967 l
  11888. 383.0011 239.6967 l
  11889. 381.6811 241.0167 l
  11890. 397.7613 241.0167 l
  11891. 397.7613 255.6569 l
  11892. f
  11893. 378.141 251.1569 m
  11894. 378.141 249.5369 l
  11895. 375.501 249.5369 l
  11896. 375.501 246.2968 l
  11897. 378.141 246.2968 l
  11898. 378.141 244.6768 l
  11899. 381.5311 247.9468 l
  11900. 378.141 251.1569 l
  11901. f
  11902. 401.4064 251.1569 m
  11903. 401.4064 249.5369 l
  11904. 398.7663 249.5369 l
  11905. 398.7663 246.2968 l
  11906. 401.4064 246.2968 l
  11907. 401.4064 244.6768 l
  11908. 404.7964 247.9468 l
  11909. 401.4064 251.1569 l
  11910. f
  11911. 393.2013 259.332 m
  11912. 390.5612 259.332 l
  11913. 390.5612 261.972 l
  11914. 389.4812 261.972 l
  11915. 389.4812 259.332 l
  11916. 386.7212 259.332 l
  11917. 389.9912 255.9419 l
  11918. 393.2013 259.332 l
  11919. f
  11920. 390.7078 242.8996 m
  11921. 388.7456 242.8996 l
  11922. 388.7456 251.2891 L
  11923. 387.2226 251.2891 L
  11924. 385.7308 251.2891 385.7173 251.58 385.5157 250.0612 c
  11925. 384.5346 250.0612 L
  11926. 384.5346 252.4804 L
  11927. 394.7838 252.4804 L
  11928. 394.7838 250.0612 L
  11929. 393.8027 250.0612 L
  11930. 393.6011 251.58 393.5876 251.2891 392.0958 251.2891 c
  11931. 390.7078 251.2891 L
  11932. 390.7078 242.8996 L
  11933. F
  11934. U
  11935. %%PageTrailer
  11936. gsave annotatepage grestore showpage
  11937. %%Trailer
  11938. Adobe_IllustratorA_AI3 /terminate get exec
  11939. Adobe_typography_AI3 /terminate get exec
  11940. Adobe_customcolor /terminate get exec
  11941. Adobe_cshow /terminate get exec
  11942. Adobe_cmykcolor /terminate get exec
  11943. Adobe_packedarray /terminate get exec
  11944. %%EOF
  11945. D◊#ˇ ˇˇˇˇ#◊ 
  11946. d, Palatino
  11947. .°dONLNd$ñ0+¥LOAn application can also register a component itself using the Component Manager°dONLNdP0ñ<·* Gcall RegisterComponent or RegisterComponentResource. As we’ll see, this°dONLNdò<ñH¿* Aregistration method facilitates symbolic debugging of components.,     Helvetica
  11948.     °dONLNd€Uñ`7*!Global versus local registration.°dONLNd¸U7`:)° 
  11949. °dONLNd˝T:`Î)'Components can be registered locally or°dONLNd%`ñl(à¥Sglobally. A component that’s registered locally is visible only within the A5 world°dONLNdylñx* Qin which it’s registered, whereas a globally registered component is available to°dONLNdÀxñÑ* Sall potential client applications. Typically, you register a component locally only°dONLNdÑñêî* <if you want to restrict its use to a particular application.
  11950. °dONLNd\°ñØ[*A SIMPLE MATH COMPONENT
  11951. °dONLNdu≥ñø¸*NTo help you understand how to write a component, we’re going to go through the°dONLNdƒøñÀ
  11952. * Owhole process with an example — in this case, a simple math component. We start°dONLNdÀñ◊* Nby contacting the Apple Component Registry group, and to our astonishment (and°dONLNdc◊ñ„
  11953. * Qtheir bemusement), we find that there are no registered components that do simple°dONLNdµ„ñÔ* Nmath! We assume for the moment that the arithmetic operators in our high-level°dONLNdÔñ˚˛* Mprogramming language are unavailable and that our application is in desperate°dONLNdR˚ñ* 4need of integer division and multiplication support.°dONLNdáñ÷*DWe create a component called Math that performs integer division and°dONLNdÃñ+‹* multiplication.
  11954.     °dONLNd‹<ñGb*!THE FUNCTION PROTOTYPE DEFINITION
  11955. °dONLNd˛GñS* RWe need to define function prototypes for each of the calls in our component API —°dONLNdQSñ_Ù* Hnamely, DoDivide and DoMultiply. The function prototype for the DoDivide°dONLNdö_ñk‰* Fcomponent call can be found in MathComponent.h and is shown below. The°dONLNd·kñw|* 3declaration for the DoMultiply function is similar.,
  11956. Courier
  11957.     °dONLNdÑñè¬*<pascal ComponentResult DoDivide (MathComponent mathInstance,°dONLNdTê§õ®+ 4short numerator, short denominator, short *result) =°dONLNdãú§ßq* )ComponentCallNow (kDoDivideSelect, 0x08);
  11958. °dONLNdµ≥ñøfl(€¥GThis resembles a normal C language function prototype with a relatively°dONLNd˝øñÀ˚* Kstraightforward parameter list. The mathInstance parameter is the component°dONLNdIÀñ◊* Oinstance through which the application accesses the component; we’ll see how an°dONLNdô◊ñ„* Rapplication gets one of these instances in a moment. The numerator and denominator°dONLNdÏ„ñÔˇ* Oparameters are self-explanatory and are passed in by the calling application as°dONLNd<Ôñ˚ı* Owell. The contents of the last parameter, result, are filled in by the DoDivide°dONLNdå˚ñ* function upon completion.°dONLNd¶ñ¯*KThose of you who have a passing familiarity with C are probably more than a°dONLNdÚñ+¸* Olittle curious about the last portion of the declaration. ComponentCallNow is a°dONLNd    B+ñ7˚* Hmacro defined by the Component Manager (see “Inside the ComponentCallNow°dONLNd    ã7ñCÏ* MMacro” for the nuts and bolts of how the macro works). Its main purpose is to°dONLNd    ŸCñOƒ*
  11959. identify a xBx/,Times
  11960. ({% 
  11961. +
  11962. 16
  11963. +md)e)v)e)l)o)p)  
  11964. )
  11965. December 1992ˇî◊#ˇ ˇˇˇˇ#◊ 
  11966. d,     Helvetica
  11967. .°dONLNd !.B+?I!INSIDE THE COMPONENTCALLNOW MACRO"62# 636("6)#"72"7)
  11968.     °dONLNd#7!B·*-Some of you may be wondering exactly what the°dONLNdQC!NÍ* .ComponentCallNow macro does. Let’s expand this°dONLNdÄO!Z* 7macro for our DoDivide component call and examine it in°dONLNd∏[!f:* detail.,
  11969. Courier°dONLNd¡s&~Û+)= {0x2F3C, 0x08, kDoDivideSelect, 0x7000,°dONLNdÌ5ä]+ 0xA82A};°dONLNdˆí!ù(π?7The first element, 0x2F3C, is the Motorola 68000 opcode°dONLNd.ù!®* ;for a move instruction. Execution of this instruction loads°dONLNdj®!≥* 9the contents of the next two elements onto the stack. The°dONLNd§≥!æ* 8next element, 0x08, is the amount of stack space that we°dONLNd›æ!…˘* 6calculated for the function parameters of the DoDivide°dONLNd…!‘˝* 8call. The third element, kDoDivideSelect, is the request°dONLNdO:EÍ(a;3code corresponding to the DoDivide call. The fourth°dONLNdÉEPÙ* 4element, 0x7000, is the Motorola 68000 opcode for an°dONLNd∏P[* ;instruction that sets the contents of register D0 to 0. The°dONLNdÙ[f‰* 0Component Manager interprets this condition as a°dONLNd%fq˙* 7request to call your component rather than handling the°dONLNd]q|˘* 7request itself. The last element, 0xA82A, is the opcode°dONLNdï|á˝* 8for an instruction that executes a trap to the Component°dONLNdŒáíC* Manager.°dONLNd◊û©*4While you can use this inline code in your component°dONLNd ©¥ˆ* 5function declarations directly, we recommend that you°dONLNdB¥øÚ* 0use the ComponentCallNow macro to make your code°dONLNdsø W* more portable. L2˝2"˛2# ˛3˛,"˛- ˛.˛( L)˝)"˛)#, Palatino
  11970. °dONLNdÉÌ˘k(6Kroutine as a component function, as opposed to a normal C function. When an°dONLNdœ˘â* Rapplication calls the DoDivide function, the macro is executed. This causes a trap°dONLNd"ê* Oto the Component Manager to be executed, allowing the Component Manager to send°dONLNdr>* Aa message to the component responsible for handling the function.°dONLNdµ)5`*EThe first parameter to the ComponentCallNow macro is an integer value°dONLNd˚5Aí* Wrepresenting the request code for the integer division function. As noted earlier, your°dONLNdSAMà* Qcomponent’s dispatcher uses this request code to determine what function has been°dONLNd•MYi* Krequested. Recall that you may only define request codes that are positive.°dONLNdÒeqà*QThe second parameter is an integer value that indicates the amount of stack space°dONLNdDq}r* P(in bytes) that’s required by the function for its parameters, not including the°dONLNdï}ây* Mcomponent instance parameter. Be careful to note that Boolean and single-byte°dONLNd„âïâ* Rparameters may need to be passed as 16-bit integer values (see the section “Eleven°dONLNd6ï°ë* QCommon Mistakes” for details). For the Math component, the space required for the°dONLNdà°≠ä* UDoDivide function is two 16-bit integers followed by a 32-bit pointer, for a total of°dONLNdfi≠πN* eight bytes.
  11971.     °dONLNdΠ’‘*THE MATH COMPONENT DISPATCHER
  11972. °dONLNd        ’·â* PThe dispatcher of the Math component is shown in its entirety below. Notice that°dONLNd    Z·Ìz* Pthe dispatcher executes its component functions indirectly by calling one of two°dONLNd    ´Ì˘E* >Component Manager utility functions — CallComponentFunction or°dONLNd    Í˘à* ICallComponentFunctionWithStorage. You use CallComponentFunction when your°dONLNd
  11973. 4ë* Rcomponent function needs only the fields in the ComponentParameters structure, and°dONLNd
  11974. áv* ICallComponentFunctionWithStorage when it also needs access to the private°dONLNd
  11975. —)+* =storage that was allocated in your component’s open function. x4x&,Times
  11976. ({) 
  11977. +
  11978. 17
  11979. (Ú*1TECHNIQUES FOR WRITING AND DEBUGGING COMPONENTS  
  11980. )”
  11981. December 1992ˇ j◊#ˇ ˇˇˇˇ#◊ 
  11982. d,
  11983. Courier
  11984.     .°dONLNd%ñ0≥+¥L9pascal ComponentResult main (ComponentParameters *params,°dONLNdE15<Ä+ü Handle storage)°dONLNdU=ñHõ(d¥{°dONLNdXI§T⁄+ >// This routine is the main dispatcher for the Math component.°dONLNdòU§`?* ComponentResult result = noErr;°dONLNdªm§x≠*5// Did we get a Component Manager request code (< 0)?°dONLNdÚy§Ñ* if (params->what < 0) {°dONLNd Ö≥ê+ switch (params->what)°dONLNd$ë≥ú∏* {°dONLNd)ù¡®C+ case kComponentOpenSelect:°dONLNdFùo®∫)Æ// Open request°dONLNdZ©–¥˜(–Ó;result = CallComponentFunctionWithStorage (storage, params,°dONLNdûµ
  11985. ¿•+: (ComponentFunction) _MathOpen);°dONLNd¬¡–ÃÓ(ËÓbreak;°dONLNdÃÕ¡ÿH(Ùflcase kComponentCloseSelect:°dONLNdÍÕoÿø)Æ// Close request°dONLNdˇŸ–‰˜(Ó;result = CallComponentFunctionWithStorage (storage, params,°dONLNdCÂ
  11986. ™+:  (ComponentFunction) _MathClose);°dONLNdhÒ–¸Ó(Óbreak;°dONLNdr˝¡H($flcase kComponentCanDoSelect:°dONLNdê˝oƒ)Æ// Can do request°dONLNd¶    –ì(0Ó'result = CallComponentFunction (params,°dONLNd÷
  11987.  •+: ComponentFunction) _MathCanDo);°dONLNd˙!–,Ó(HÓbreak;°dONLNd-¡8R(Tflcase kComponentVersionSelect:°dONLNd#-o8…)Æ// Version request°dONLNd:9–Dì(`Ó'result = CallComponentFunction (params,°dONLNdjE
  11988. P¥+: "(ComponentFunction) _MathVersion);°dONLNdëQ–\Ó(xÓbreak;°dONLNdõ]¡hM(Ñflcase kComponentTargetSelect:°dONLNd∫]ohƒ)Æ// Target request°dONLNd–i–t˜(êÓ;result = CallComponentFunctionWithStorage (storage, params,°dONLNdu
  11989. ÄØ+: !(ComponentFunction) _MathTarget);°dONLNd:Å–åÓ(®Óbreak;°dONLNdDç¡òW(¥flcase kComponentRegisterSelect:°dONLNddçoòÁ)Æ// Register request not °dONLNdåôo§´* // supported°dONLNdú•¡∞È(Ãfldefault:°dONLNd≠•o∞…)Æ// Unknown request°dONLNdƒ±–º*(ÿÓresult = paramErr;°dONLNd€Ω–»Ó* break;°dONLNd‰…≥‘∏(—}°dONLNdÁ’§‡©(¸¬}°dONLNdÍ·§Ϭ* else {°dONLNd¸·oÏ˚)À// One of our request codes?°dONLNdÌ≥¯(—switch (params->what)°dONLNd3˘≥∏* {°dONLNd8¡*+ case kDoDivideSelect:°dONLNdRoƒ)Æ// Divide request°dONLNdh–ì(8Ó'result = CallComponentFunction (params,°dONLNdô
  11990. (π+: #(ComponentFunction) _MathDoDivide);°dONLNd¡)–4Ó(PÓbreak; xBx/,Times
  11991. ({% ,     Helvetica
  11992. +
  11993. 18
  11994. +md)e)v)e)l)o)p)  
  11995. )
  11996. December 1992ˇ ‚◊#ˇ ˇˇˇˇ#◊ 
  11997. d,
  11998. Courier
  11999.     .°dONLNdC$∂+a@case kDoMultiplySelect:°dONLNdÒ$P)Æ// Multiply request°dONLNd3%R0(Lp'result = CallComponentFunction (params,°dONLNdc1å<E+: %(ComponentFunction) _MathDoMultiply);°dONLNdç=RHp(dpbreak;°dONLNdóICTk(padefault:°dONLNd®IÒTK)Æ// Unknown request°dONLNdøUR`¨(|presult = paramErr;°dONLNd÷aRlp* break;°dONLNdflm5x:(îS}°dONLNd‚y&Ñ+(†D}°dONLNdÂÖ&êv* return (result);°dONLNdˆëú(∏6}, Palatino
  12000. °dONLNd¯®¥Ö*MA drawback of the dispatcher is the overhead incurred in having the Component°dONLNdF¥¿Ü* PManager functions mediate all your requests. To reduce your calling overhead and°dONLNdó¿ÃŒ* (thus improve performance, you can use a °dONLNdø¿ŒÃ )∂
  12001. fast dispatch°dONLNdÿ Ãr)= technique. While this°dONLNd„Ãÿ|(Ù6Qtechnique is used in most of the QuickTime 1.0 components, this is the first time°dONLNd5ÿ‰t* Mthat it’s been publicly described. See “Fast Component Dispatch” for details.,     Helvetica
  12002.     °dONLNdÑı‚* THE MATH COMPONENT DODIVIDE CALL
  12003. °dONLNd¶ X* EFor the Math component, the DoDivide function is declared as follows:
  12004.     °dONLNdÏ$Ö*Ipascal ComponentResult _MathDoDivide (short numerator, short denominator,°dONLNd6%0*  °dONLNdE%„03)Àshort* quotient)°dONLNdV1<(X6{°dONLNdY=&H¡+ ComponentResult result = noErr;°dONLNd|U&`ô*if (denominator != 0) {°dONLNdña5lfl+ "*quotient = numerator/denominator;°dONLNd∫m&x+(îD}°dONLNdæy&ÑD* else {°dONLNd«Ö5ê{+ *quotient = 0;°dONLNdÿë5úv*
  12005. result = -1L;°dONLNdÊë}ú)H// Divide by zero not allowed°dONLNdù&®+(ƒD}°dONLNd©&¥v* return (result);°dONLNdµ¿(‹6}
  12006. °dONLNdÃÿá*RThe key thing to note here is that component functions must always return a result°dONLNdnÿ‰à* Ucode. The return value is 32 bits and is defined in the API for the component. In our°dONLNdƒ‰â* Ucase, a value of 0 (noErr) indicates successful completion of the call and a negative°dONLNd¸d* Hvalue indicates that an abnormal completion occurred. Note that for some°dONLNdc¸t* Lcomponents a negative result code could indicate that the returned parameter°dONLNd∞è* Svalues should be interpreted in a particular manner. For example, a video digitizer°dONLNd å* Qmay return a negative result code of notExactSize from the VDSetDestination call.°dONLNdV ,í* VThis doesn’t indicate an error. It just means that the requested size wasn’t available°dONLNd≠,8Å* Son the digitizer and that the next closest size was given instead. Also, since this°dONLNd8DR* result code is x4x&,Times
  12007. ({) 
  12008. +
  12009. 19
  12010. (Ú*1TECHNIQUES FOR WRITING AND DEBUGGING COMPONENTS  
  12011. )”
  12012. December 1992ˇ◊#ˇ ˇˇˇˇ#◊ 
  12013. d,     Helvetica
  12014. .°dONLNd %.Ì+CIFAST COMPONENT DISPATCH
  12015.     °dONLNd/%:à*
  12016. BY MARK KRUEGER"65# 666,"6-#"75("7-(°dONLNd+K%V˝*7If you’re concerned about the time it takes to dispatch°dONLNdcW%bÛ* 3calls made to your component, try the fast dispatch°dONLNdóc%nÍ* 0method. This method eliminates the need for your°dONLNd»o%zÛ* 1component to make the extra call to the Component°dONLNd˙{%Ü„* +Manager functions CallComponentFunction and°dONLNd&á%í* 4CallComponentFunctionWithStorage, and allows control°dONLNd[ì%û* <to pass directly back to the caller. It does this by calling°dONLNdòü%™˛* 6your component entry point with the call’s parameters,°dONLNdœ´%∂˜* 5the instance storage, and the caller’s return address°dONLNd∑%¬* 5already on the stack. It passes the component request°dONLNd;√%Œˇ* 8code in register D0, and points register A0 at the stack°dONLNdtœ%⁄‘* ,location where the instance storage is kept.°dONLNd¢„%Ó›*.To handle a fast dispatch, you must write your°dONLNd—Ô%˙¸* 3component entry point in assembly language. Use the°dONLNd˚%˚* 7request code in D0 as an index into a table of function°dONLNd?K Vm(r>addresses, paying °dONLNdQKmVÓ)M!special attention to the negative°dONLNdsW b‚(~>-request codes used for the standard Component°dONLNd°c nø* $Manager calls like OpenComponent and°dONLNdΔo zˇ* 7CloseComponent. If the functions are defined correctly,°dONLNd˛{ Ü* 9the dispatcher can jump directly to the function address.°dONLNd8á íÈ* 3Note that the function parameter the caller uses to°dONLNdlì ûˇ* 7specify the component instance will instead be a handle°dONLNd§ü ™ˇ* 5to your component instance storage. When the function°dONLNd⁄´ ∂˘* :completes, control will return to the calling application.°dONLNdø  Ë*0You need to tell the Component Manager that your°dONLNdGÀ ÷Ì* 2component has a fast dispatch handler instead of a°dONLNdz◊ ‚˝* 8normal dispatcher. To do this, set bit 30 ($40000000) of°dONLNd≥„ Ó˚* 4the componentFlags field of your component resource,°dONLNdËÔ ˙„* /and the Component Manager will always call your°dONLNd˚ Œ* )component using the fast dispatch method. `5/5"05# 0600"01 020, `-/-"0-#, Palatino
  12017. °dONLNdCñ+(G¥T32 bits, you could actually return pointers or handles as results, rather than error°dONLNdò+ñ7±* codes.
  12018. °dONLNdüHñVf*USING THE MATH COMPONENT
  12019. °dONLNd∏Zñf*RIn this section, we look at how an application uses the Math component. First, the°dONLNd fñr* Mapplication has to ask the Component Manager to locate the Math component. If°dONLNdYrñ~ı* Nthe Math component is found, the application can open it and make calls to it.
  12020.     °dONLNd®èñöÜ*&FINDING AND OPENING THE MATH COMPONENT
  12021. °dONLNdœöñ¶ * OWe tell the Component Manager which component we’re looking for by sending it a°dONLNd¶ñ≤ * PComponentDescription record containing the type, subtype, and manufacturer codes°dONLNdp≤ñæ‹* Efor the desired component. We then call the Component Manager routine°dONLNd∂æñ 
  12022. * QFindNextComponent to locate a registered component that fits the description. The°dONLNd     ñ÷X* )code fragment below shows how this looks.,
  12023. Courier
  12024.     °dONLNd    3„ñÓ˙*ComponentDescription°dONLNd    I„ÓE)Ç    mathDesc;°dONLNd    SÔñ˙»(¥
  12025. Component °dONLNd    cÔ˙h)ÇmathComponentID;°dONLNd    tñ'(.¥// Math component description°dONLNd    íñm* +mathDesc.componentType = mathComponentType;°dONLNd    æñ*1* mathDesc.componentSubType = 0L;°dONLNd    ‚~*∫)Ë // Wild card xBx/,Times
  12026. ({& 
  12027. +
  12028. 20
  12029. +md)e)v)e)l)o)p)  
  12030. )
  12031. December 1992ˇÙ`◊#ˇ ˇˇˇˇ#◊ 
  12032. d,
  12033. Courier
  12034.     .°dONLNd$‡+6@(mathDesc.componentManufacturer = 'appl';°dONLNd)%0©* mathDesc.componentFlags = 0L;°dONLNdK%Ò0-)Ÿ // Wild card°dONLNdX1<Ω(X6!mathDesc.componentFlagsMask = 0L;°dONLNd}1Ò<-)Ÿ // Wild card°dONLNdãITê(p6// Find a Math component°dONLNd§U`!* 5mathComponentID = FindNextComponent (nil, &mathDesc);, Palatino
  12035. °dONLNd⁄lx~*IThe zeros in the componentSubType, componentFlags, and componentFlagsMask°dONLNd$xÑ* Nfields indicate that they function as wild cards. If the Component Manager was°dONLNdsÑêR* Gunable to locate a component matching the description, it returns zero.°dONLNdºú®É*KAssuming the Component Manager returned a nonzero component ID, we now open°dONLNd®¥* 7the component using the OpenComponent call, as follows:
  12036.     °dONLNdA¡Ã*/mathInstance = OpenComponent (mathComponentID);
  12037. °dONLNdqÿ‰à*OOpenComponent returns a unique connection reference — a component instance — to°dONLNd¡‰Ç* Pthe Math component. If the component instance is nonzero, we’re ready to use the°dONLNd¸@* Ccomponent. Figure 5 illustrates the process of finding a component.
  12038. 26SÎ"26°d
  12039. ONLNfH"Sΰd
  12040. ONLNf{j†Ç†é
  12041. 41526ò8@µ@µ26rÎ……Ë„¯<Ú¸ÙÛˇ¿¯ˇÛ˛ÙÛ@¯ˇÛˇÙÛ@˘ˇÛˇÙÛ@˘ˇÄÙˇÙÛ@˘ˇÄÙˇÙÛ@˘ˇÛˇÙÛ@¯ˇÛ˛ÙÛ@¯ˇÚ¸ÙÛ@¯<ÚÙÛ@    ⁄Û@    ⁄Û@    ⁄Û@    ⁄Û@#¯ 0ı‡˝ò¿ ˛p˝Ä˙@*¯^u3s8„"1˙>„qπò€åÏ«¨@ã>„qπÄ˙@*¯YMI¥®ëƒJ˙™î“hòŒá2É2ÄÑ™î“hÄ˙@*¯˘MF¥®ñ¢y˙™î”Ëïvõ>É>@Ñ™î”ËÄ˙@+¯âML¥®îë@Ä˚™î“(ïfì0É0 å™î“(Ä˙@)¯éu3≥(„¢1˘„*„Q®í^éÏÉ,@s*„Q®Ä˙@¯@˛Äıĸ ¸˛Ä˜@¯@˛Äıĸ¿¸˛Ä˜@    ⁄Û@*¯ 0˝¸Ä ¸@˛ P ˚@.¯
  12042. ÏFfispl3|Ês;˝ ò¯Ÿ∏`ÕÛçÃÏ\˛ÿÚyπúR`˚@.˘ 2âô4–îL‘ôT©¸
  12043. §®jh13RSR§T˛•40⁄TT ˚@.˘ >Hô4–îD‘ôW©¸
  12044. §©™(—RS^§T˛Ω23ZTR ˚@.˘ 0)ô4–îL‘ôT)¸
  12045. §©*hë3RSP§T˛°12ZTQ ˚@-¯
  12046. ÏFû3Pd3TÊS)¸
  12047. ò®È®pÕSçL§T˛òÚ1ŸîR ˚@ˆ¸ÄÙ˙ ˆ@ˆ¸ÄÙ˙¿ˆ@    ⁄Û@$˘ ˝@˚  ¿`˛Û@%˘    b≠Õ √ôÃ˚h6<ûmgò≠¯¿Û@%˘    "ßF!¶f R˚0)M 5猪i Û@%˘    "ªE&¢=R˚(/Lå’ïਖi‡Û@%˘    "≥DÖ$¶`àR˚ $(LLïïH¨–i˛Û@%˘    !OE√ôôL˚(&<åueàT–h¿Û@
  12048. ʈÛ@
  12049. Ê0ˆÛ@    ⁄Û@¯‡˛¿ı@ Ä@¿¸Û@'˘
  12050. |Ês;ÛòÌĸ
  12051. òÙƒÿ„ô]Õ¿˝ıˇ@&˘    ‘ôT©⁄ç3˚
  12052. %5(e$¶&R”@˝ıˇ@'˘    ‘ôW©jµ?˚ =5‰}$Ω"R”A¿˛ıˇ¿@'˘    ‘ôT)J•1˚ !5a$†¶R”@|˛ıˇ¿@'¯    „TÊS)zúÌ ¸¸ƒX„ô\ÕH‡ıˇ¿@ˆÄ¸ ˘ ¸˛?ıˇ¿@ˆÄ¸¿˘ ¸˛¯ıˇ¿@
  12053. ‹¿ıˇ¿@ €|ıˇ¿@ÙÈ‚ıˇ¿@ÙË?ıˇ¿@Ù˯ıˇ¿@ÙË ıˇ¿@ÙËıˇ¿@ÙËıˇ¿@ÙËıˇ¿@ÙËıˇ¿@ÙËıˇ¿@ÙËıˇ¿@ò8@ĵ@ĵr6≤ÎÙËıˇ¿@ÙËıˇ¿@ÙËıˇ¿@ÙËıˇ¿@ÙËıˇ¿@ÙËıˇ¿@ÙËıˇ¿@?˙ˇÄ˝˚˙ˇ˛ˆıˇ¿@?˙ˇÄ˝˚˙ˇ˛ˆıˇ¿@?˙ˇ‡˝˚˘ˇÄ˜ıˇ¿@?˙ˇ‡˝˚˘ˇÄ˜ıˇ¿@?˙ˇ‡˝˚˘ˇÄ˜ıˇ¿@?˙ˇ‡˝˚˘ˇÄ˜ıˇ¿@?˙ˇ‡˝˚˘ˇÄ˜ıˇ¿@?˙ˇ‡˝˚˘ˇÄ˜ıˇ¿@?˙ˇ‡˝˚˘ˇÄ˜ıˇ¿@?˙ˇ‡˝˚˘ˇÄ˜ıˇ¿@?˙ˇ‡˝˚˘ˇÄ˜ıˇ¿@?˙ˇ‡˝˚˘ˇÄ˜ıˇ¿@?˙ˇ‡˝˚˘ˇÄ˜ıˇ¿@?˙ˇ‡˝˚˘ˇÄ˜ıˇ¿@?˙ˇ‡˝˚˘ˇÄ˜ıˇ¿@?˙ˇ‡˝˚˘ˇÄ˜ıˇ¿@?˙ˇ‡˝˚˘ˇÄ˜ıˇ¿@?˙ˇ‡˝˚˘ˇÄ˜ıˇ¿@?˙ˇ‡˝˚˘ˇÄ˜ıˇ¿@?˙ˇ‡˝˚˘ˇÄ˜ıˇ¿@?˙ˇ‡˝˚˘ˇÄ˜ıˇ¿@?˙ˇ‡˝˚˘ˇÄ˜ıˇ¿@?˙ˇ‡˝˚˘ˇÄ˜ıˇ¿@?˙ˇ‡˝˚˘ˇÄ˜ıˇ¿@?˙ˇ‡˝˚˘ˇÄ˜ıˇ¿@?˙ˇ‡˝˚˘ˇÄ˜ıˇ¿@?˙ˇ‡˝˚˘ˇÄ˜ıˇ¿@?˙ˇ‡˝˚˘ˇÄ˜ıˇ¿@?˙ˇ‡˝˚˘ˇÄ˜ıˇ¿@?˙ˇ‡˝˚˘ˇÄ˜ıˇ¿@?˙ˇ‡˝˚˘ˇÄ˜ıˇ¿@?˙ˇ‡˝˚˘ˇÄ˜ıˇ¿@?˙ˇ‡˝˚˘ˇÄ˜ıˇ¿@?˙ˇ‡˝˚˘ˇÄ˜?ˆˇ¿@?˙ˇ‡˝˚˘ˇÄ˜?ˆˇ¿@?˙ˇ‡˝˚˘ˇÄ˜Û@?˙ˇ‡˝˚˘ˇÄ˜Û@?˙ˇ‡˝˚˘ˇÄ˜Û@?˙ˇ‡˝˚˘ˇÄ˜Û@?˙ˇ‡˝˚˘ˇÄ˜Û@?˙ˇ‡ˆ˘ˇÄ˜Û@?˙ˇ‡ˆ˘ˇÄ˜Û@?˙ˇ‡ˆ˘ˇÄ˜Û@?˙ˇ‡ˆ˘ˇÄ˜Û@?˙ˇ‡ˆ˘ˇÄ˜Û@!?˙ˇ‡|1¸˘ˇį ¬˝Û@!?˙ˇ‡9ÄΔ}¸˘ˇÄ(„/çÚ˝Û@!?˙ˇ‡f@C4¸˘ˇÄ%îÄ
  12054. Ü–˝Û@!?˙ˇ‡g«ÖM4¸˘ˇÄ%óè
  12055. ö–˝Û@!?˙ˇ‡fÖI4¸˘ˇÄ%î
  12056. í–˝Û@!?˙ˇ‡πÄG4¸˘ˇÄ"„
  12057. é–˝Û@?˙ˇ‡†¯˘ˇÄĢÛ@?˙ˇ‡†¯˘ˇÄĢÛ@?˙ˇ‡ˆ˘ˇÄ˜Û@$?˙ˇ‡8ÄÄ@˛˘ˇÄpA˛Û@$?˙ˇ‡Fù£òÄ@˛˘ˇÄçsé`˛Û@?˙ˇ‡bíñd˙˘ˇÄ≈IYê˚ıˇ@ò8ÄÆµÄƵ≤6‡Î!?˙ˇ‡íñ|x˚˘ˇÄIYÒ‡¸ıˇ@!?˙ˇ‡Fíñ`x˚˘ˇÄçIYҸıˇ¿@?˙ˇ‡;úãò˙˘ˇÄwq.`˚ıˇ¿@?˙ˇ‡
  12058. ˘˘ˇÄ(˙ıˇ¿@?˙ˇ‡˘˘ˇÄh˙ıˇ¿@?˙ˇ‡ˆ˘ˇÄ˜ıˇ¿@'?˙ˇ ‡c@@†˘ˇÄΔ˛ÄÄıˇ¿@'?˙ˇ ‡cnVΔÎ3MŒ†˘ˇ Ä«ùMõ¶l≥πÄıˇ¿@'?˙ˇ ‡c:RijJ)̎ ÄΔ’D§òeıˇ¿@'?˙ˇ ‡U⁄S®jz<)̎ Ä´UGa§¯xjeıˇ¿@'?˙ˇ ‡UöS)jB<)̎ Ä™UFe§àxJeıˇ¿@'?˙ˇ ‡IzrÊz2ŒÄ˘ˇ Äì’≈Ÿ‰h;πıˇ¿@?˙ˇ‡˙˘ˇÄ˙ ıˇ¿@?˙ˇ‡˙˘ˇÄ˙ ıˇ¿@?˙ˇ‡¯̎ĝıˇ¿@?˙ˇ‡¯‡˘ˇÄ¯¬ıˇ¿@?˙ˇ„˜ˇ˘ˇè˜ˇ‚ıˇ¿@?˙ˇ‡¯‡˘ˇÄ¯¬ıˇ¿@?˙ˇ‡¯̎ĝıˇ¿@?˙ˇ‡¯˘ˇÄ¯ıˇ¿@?˙ˇ‡ˆ˘ˇÄ˜ıˇ¿@?˙ˇ‡ ˜˘ˇÄ ¯ıˇ¿@?˙ˇ‡8˜˘ˇŇ¯ıˇ¿@?˙ˇ‡¯˜˘ˇ`ıˇ¿@?˙ˇ·˜ˇ˘ˇè˜ˇ¬ıˇ¿@?˙ˇ‡¯˜˘ˇ`ıˇ¿@?˙ˇ‡8˜˘ˇŇ¯ıˇ¿@?˙ˇ‡ ˜˘ˇÄ ¯ıˇ¿@?˙ˇ‡ˆ˘ˇÄ˜ıˇ¿@#?˙ˇ‡˛òø˘ˇÄ˛&3˝ıˇ¿@#?˙ˇ‡˛2e2¸˘ˇÄ˛iL§˝ıˇ¿@#?˙ˇ‡˛e2¸˘ˇÄ˛)L§˝ıˇ¿@#?˙ˇ‡˛e2¸˘ˇÄ˛)L§˝ıˇ¿@#?˙ˇ‡˛e2¸˘ˇÄ˛)L§˝ıˇ¿@%˙ˇ‡˛òø?˙ˇÄ˛&3˝ıˇ¿@˙ˇ‡ˆ?˙ˇÄ˜ıˇ¿@ ⁄ıˇ¿@ ⁄ıˇ¿@Ú Ò˚ıˇ¿@ÚÄÚp˚ıˇ¿@Ò‡Û¿˚ıˇ¿@Ò8Û˙ıˇ¿@ÒÛ˙ıˇ¿@Ò¿Ùp˙ıˇ¿@pı¿˙ıˇ¿@ı˘ıˇ¿@òÅ∂@µHHQoD ¡Ä˛ˇˇˇˇˇˇˇˇˇˇÃÃˇˇˇˇôôˇˇˇˇffˇˇˇˇ33ˇˇˇˇˇˇÃÃˇˇˇˇÃÃÃÃˇˇÃÃôô    ˇˇÃÃff
  12059. ˇˇÃÃ33 ˇˇÃà ˇˇôôˇˇ
  12060. ˇˇôôÃÃˇˇôôôôˇˇôôffˇˇôô33ˇˇôôˇˇffˇˇˇˇffÃÃˇˇffôôˇˇffffˇˇff33ˇˇffˇˇ33ˇˇˇˇ33ÃÃˇˇ33ôôˇˇ33ffˇˇ3333ˇˇ33ˇˇˇˇˇˇÃàˇˇôô!ˇˇff"ˇˇ33#ˇˇ$ÃÃˇˇˇˇ%ÃÃˇˇÃÃ&ÃÃˇˇôô'ÃÃˇˇff(ÃÃˇˇ33)ÃÃˇˇ*ÃÃÃÃˇˇ+ÃÃÃÃÃÃ,ÃÃÃÃôô-ÃÃÃÃff.ÃÃÃÃ33/ÃÃÃÃ0ÃÃôôˇˇ1ÃÃôôÃÃ2ÃÃôôôô3ÃÃôôff4ÃÃôô335ÃÃôô6ÃÃffˇˇ7ÃÃffÃÃ8ÃÃffôô9ÃÃffff:ÃÃff33;ÃÃff<ÃÃ33ˇˇ=ÃÃ33ÃÃ>ÃÃ33ôô?ÃÃ33ff@ÃÃ3333AÃÃ33BÃÃˇˇCÃÃÃÃDÃÃôôEÃÃffFÃÃ33GÃÃHôôˇˇˇˇIôôˇˇÃÃJôôˇˇôôKôôˇˇffLôôˇˇ33MôôˇˇNôôÃÃˇˇOôôÃÃÃÃPôôÃÃôôQôôÃÃffRôôÃÃ33SôôÃÃTôôôôˇˇUôôôôÃÃVôôôôôôWôôôôffXôôôô33YôôôôZôôffˇˇ[ôôffÃÃ\ôôffôô]ôôffff^ôôff33_ôôff`ôô33ˇˇaôô33ÃÃbôô33ôôcôô33ffdôô3333eôô33fôôˇˇgôôÃÃhôôôôiôôffjôô33kôôlffˇˇˇˇmffˇˇÃÃnffˇˇôôoffˇˇffpffˇˇ33qffˇˇrffÃÃˇˇsffÃÃÃÃtffÃÃôôuffÃÃffvffÃÃ33wffÃÃxffôôˇˇyffôôÃÃzffôôôô{ffôôff|ffôô33}ffôô~ffffˇˇffffÃÃÄffffôôÅffffffÇffff33ÉffffÑff33ˇˇÖff33ÃÃÜff33ôôáff33ffàff3333âff33äffˇˇãffÃÃåffôôçfffféff33èffê33ˇˇˇˇë33ˇˇÃÃí33ˇˇôôì33ˇˇffî33ˇˇ33ï33ˇˇñ33ÃÃˇˇó33ÃÃÃÃò33ÃÃôôô33ÃÃffö33ÃÃ33õ33ÃÃú33ôôˇˇù33ôôÃÃû33ôôôôü33ôôff†33ôô33°33ôô¢33ffˇˇ£33ffÃç33ffôô•33ffff¶33ff33ß33ff®3333ˇˇ©3333ÃÙ3333ôô´3333ff¨333333≠3333Æ33ˇˇØ33ÃÃ∞33ôô±33ff≤3333≥33¥ˇˇˇˇµˇˇÃÃ∂ˇˇôô∑ˇˇff∏ˇˇ33πˇˇ∫ÃÃˇˇªÃÃÃúÃÃôôΩÃÃffæÃÃ33øÃÿôôˇˇ¡ôôÃìôôôô√ôôffƒôô33≈ôôΔffˇˇ«ffÃûffôô…ffff ff33ÀffÃ33ˇˇÕ33ÃÃŒ33ôôœ33ff–3333—33“ˇˇ”ÃÑôô’ff÷33◊ÿˇˇˇŸ˘`˘`˘`⁄Ú–Ú–Ú–€Ï@Ï@Ï@‹Â∞Â∞Â∞›fl fl fl fiÿêÿêÿêfl“““‡ÀpÀpÀp·ƒ‡ƒ‡ƒ‡‚æPæPæP„∑¿∑¿∑¿‰±0±0±0™†™†™†Ê§§§ÁùÄùÄùÄËñññÈê`ê`ê`Íâ–â–â–ÎÉ@É@É@Ï|∞|∞|∞Ìv v v ÓoêoêoêÔiiibpbpbpÒ[‡[‡[‡ÚUPUPUPÛN¿N¿N¿ÙH0H0H0ıA†A†A†ˆ;;;˜4Ä4Ä4į---˘'`'`'`˙ – – –˚@@@¸∞∞∞˝
  12061.  
  12062.  
  12063.  ˛êêê@µ26rÎ'ÅÅÅÀÅÅÅÀ
  12064. Å∂Åó∂Üë硽∑äíˇèˇ˝πᲡëˇèˇ˝"∫ˇˇäˇˇìˇèˇ˝πˇˇä˝ˇëˇèˇ˝#∫ˇ˛ã    ìˇèˇ˝"∫ˇˇäˇˇìˇèˇ˝∑ˇˇä˝ˇíˇèˇ˝πáëˇèˇ˝∂Ñèˇèˇ˝ÅÅ√ˇèˇ˝ÅÅ√ˇèˇ˝ÅÅ√ˇèˇ˝ÅÅ√ˇèˇ˝<∑ˇ˜ˇ˛˜ˇ˛ù˛ˇ‹ˇ˛ˇ˛ˇˇÂˇ˛ˇfiˇ˜ˇˇ˛›ˇ¡ˇ˝«∏ˇ˝ˇ˛ˇ ˇˇˇˇˇˇ˛ˇˇˇ˛ˇ˛˛ˇ˛ˇˇˇ˛ˇ˛ˇˇ˛ˇ¬ˇ˛ˇˇˇ¸ˇ˛ˇ˛ˇˇ˛ˇ˛ˇˇ˛ˇˇˇˇˇ˛ˇˇˇˇ˛ˇ˛ˇˇ˛ˇˇˇˇˇ˛˝ˇˇˇˇ˛ˇÂˇ¯ˇ˛ˇˇˇ¸ˇ˛ˇ˛ˇˇ˛ˇ˛ˇˇ˛ˇˇˇ¡ˇ˝À∏#ˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ˛ˇˇ˛˛ˇ˛ˇ˛ˇˇˇ¡ˇ¸ˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ˛ˇˇˇ˛ˇˇ˛ˇˇ˝˛ˇˇˇˇˇ¸
  12065. ˇˇˇˇˇˇ‰ˇ¯ˇ˝ˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ˛ˇ¡ˇ˝“πˇ˛˛ˇ ˇ˛ˇ˛ˇ˛˛˛ˇˇˇˇ˛ˇˇˇ˛
  12066. ˇˇ˛ˇˇˇ˛ˇ˛˛ˇˇ¬ˇ¸˛ˇˇˇˇˇˇ˛ˇ˛ˇ˛ˇ˛ˇˇ˛ˇˇ˛ˇ˛ˇˇ˛ˇˇˇˇˇˇ˛ˇ˛ˇˇ¸ˇˇ˛ˇ˛ˇ˛Âˇ¯ˇ˝˛ˇˇˇˇˇˇ˛ˇ˛ˇ˛ˇ˛ˇˇ˛ˇ¡ˇ˝–πˇ˛ ˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ˛ ˇˇˇˇˇ˛ˇˇ˚ˇ√ˇ˛ˇˇˇˇˇˇˇˇˇˇˇˇˇ˛ˇˇ˛ˇˇˇˇˇˇˇˇˇˇˇˇˇˇ˝ˇ¸ˇˇˇˇ˚ˇÊˇ¯ˇ˛ˇˇˇˇˇˇˇˇˇˇˇˇˇ˛ˇˇ˛ˇ¡ˇ˝»πˇ˛˛ˇ˛ˇ    ˇˇˇˇ˛ˇ ˇˇˇˇˇˇ˛˛ˇ˛˛ˇˇ˛ˇ˛ˇˇ˛ˇ¡˛ˇ˛    ˇˇˇˇˇ˛ˇ˛ˇˇˇˇ˛ˇˇˇˇ˛
  12067. ˇˇˇˇ˝ˇˇ˛˛ˇ˛ˇˇˇˇ¸ˇˇˇˇˇ˛ˇÂˇ˜˛ˇ ˇˇˇˇˇ˛ˇ˛ˇˇˇˇ˛ˇˇˇˇ˛ˇ¡ˇ˝"µˇ˝ˇ„ˇöˇ–ˇŒˇËˇ©ˇ˝#µˇ˝ˇ„ˇöˇ“ˇˇÕˇËˇ©ˇ˝ÅÅ√ˇèˇ˝J∑ˇÒˇ˚ˇˇ˛ÿˇŸˇÓˇ¸ˇœ˛˛˛›ˇÌˇ˚ˇ˘ˇˇı˛ˇ˚ˇÀˇ˝›π˛ˇˇˇ˛ˇ˛ˇˇˇˇ˝ˇ˛ˇˇˇ˛ˇ¸ˇˇˇˇ˝ˇˇˇˇ¸ˇ˛ˇˇˇ˛ˇˇˇ˛ˇˇˇ⁄ˇˇˇˇ˛¸ˇ˛    ˇˇˇˇˇˇ˛ˇ˝ˇˇ¸ˇˇˇˇ¸ˇ˛ˇ˛ˇˇ˛ˇˇˇ˛ˇˇˇ˛ˇ˛ˇ·ˇ¯ˇˇˇˇ˛˝ˇˇ˝ˇˇˇ˛ˇˇˇ˛ˇ˛    ˇˇˇˇˇÀˇ˝Ó∫    ˇˇˇˇˇ˛ˇˇˇˇˇˇˇˇˇˇˇˇ˝ˇˇˇ˛&ˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇŸ ˇˇˇˇˇˇ˝ ˇˇˇˇˇˇˇ¸ˇˇ˛&ˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ˛ˇˇˇ·ˇ¯
  12068. ˇˇˇˇˇˇˇ˝ˇˇ˝
  12069. ˇˇˇˇˇˇˇˇ˛ˇˇˇ˝ˇÀˇ˝Ù∫˛ˇ˛˛ˇˇˇ˛ˇ˛ˇ˛ˇ˛ˇˇˇ˛˝ˇ˛ˇ˛ˇ˛"ˇˇˇ˛ˇˇ˛ˇ˛ˇ˛ˇˇ˛ˇˇˇ˛Ÿˇˇˇˇˇˇ˛ˇˇˇˇ˛ˇˇ˛ˇˇ˛˛˛˛˛ˇ˛ˇ˛ˇˇ˛ˇ˛ˇ˛˛ˇˇˇˇ˛ˇ˛ˇ·ˇ¯ˇˇ˛ˇˇ˛ˇ˛ˇ˛ˇ˛ˇ˛ˇ˛ˇˇˇ˛ˇ˛ˇ˛ˇ˛ˇÀˇ˝Ó∫ˇˇˇ˚ˇˇˇˇˇˇˇˇˇˇˇˇˇ˝ˇˇˇ˛ˇˇˇˇˇˇˇˇˇˇˇˇˇˇ˝ˇˇˇŸˇˇˇˇˇˇˇˇˇˇˇˇˇ˛ˇˇ˛ˇˇˇˇˇˇˇˇˇˇˇˇˇˇ˝ˇˇˇ˛ˇˇˇ·ˇ¯ˇˇ˝ˇˇˇ˛ˇˇˇˇˇˇˇˇˇˇˇ˛ˇˇ˛ˇˇÀˇ˝Âπ˛ˇˇˇ˛ˇ˛ˇˇˇ˝ˇ˛    ˇˇˇˇˇˇ¸ˇˇˇ˝
  12070. ˇˇˇˇˇˇˇ˛ˇˇˇˇˇˇˇˇˇˇŸˇˇˇ˛ˇˇˇ˛˛ˇ    ˇˇˇˇˇ˝˛ˇ˝
  12071. ˇˇˇˇˇˇˇ˛ˇ˛ˇˇˇˇˇˇˇˇˇ˛ˇˇˇ·ˇ¯ˇˇˇ˛˝ˇˇ˛ˇˇ˛˛ˇ ˇˇˇˇˇˇ˛ˇˇˇ˛ˇÀˇ˝•ˇ÷ˇåˇ¬ˇÓˇ£ˇ˝•ˇ÷ˇåˇ¬ˇˇˇ¢ˇ˝ÅÅ√ˇèˇ˝I∫˛ˇÔˇ˙ˇfiˇƒ˛ˇÔˇ˚ˇ˘ˇ˛ˆ˛ˇ˚ˇ˘ˇˇˇ˙ˇˇfiˇèˇ˝°∫ˇˇˇ˛ˇˇˇˇˇ˛ˇˇˇˇ˝ˇˇˇˇ˝ˇˇ˛ ˇˇˇˇˇˇˇ˛ˇ˝ˇˇˇˇ»ˇˇˇˇ¸ˇˇˇˇ˛˝ˇˇ˝ˇ
  12072. ˇˇˇˇˇˇˇ˛ˇ˛    ˇˇˇˇˇ˛ˇˇˇˇ¸ˇ˝¸ˇ˛ˇˇÂˇèˇ˝•∫ˇˇ˛ˇˇˇ˛ˇˇ˛ˇˇ˚ˇˇˇ˝ˇˇˇˇˇˇˇˇˇ˛ˇ˚ˇˇˇ…ˇˇˇ˚
  12073. ˇˇˇˇˇˇˇ˝ˇˇ˝
  12074. ˇˇˇˇˇˇˇˇ˛ˇˇˇ˝ˇ˛ ˇˇˇˇˇˇˇ¸    ˇˇˇˇˇÊˇèˇ˝´∫ˇˇ˛ˇˇ˛ˇˇˇ˛˛˛ˇ¸
  12075. ˛ˇˇ˛ˇˇˇ˛ˇ˛˛ˇ˛ˇ˛ˇ¸˛ˇˇ…ˇˇˇ¸ˇˇ˛ˇˇ˛ˇ˛ˇ˛ˇ˛ˇ˛ˇ˛ˇˇˇ˛ˇ˛ˇ˛ˇ˛ˇ˛ ˇˇˇ˛ˇ˛ˇ¸    ˛ˇˇˇˇ˛ˇÊˇèˇ˝©∫ˇˇ˛ ˇˇˇˇˇˇˇ˛ˇˇ˝ˇˇˇˇˇˇˇˇˇˇ¸ˇ˛ˇ˝ˇˇˇ…ˇˇˇ˝ˇˇ˝ˇˇˇ˛ˇˇˇˇˇˇˇˇˇˇˇ˛ˇˇ˛ˇˇ˛ ˇˇˇˇˇˇˇ¸ˇˇˇˇ„ˇèˇ˝¢∫ˇˇ˝ˇˇ˝ˇˇ˛ˇˇ¸ˇˇˇ˝˛ˇˇˇˇˇˇˇˇ˛ˇ¸ˇˇˇ»ˇˇˇ¸ˇˇˇ˛˝ˇˇ˛ˇˇ˛˛ˇ ˇˇˇˇˇˇ˛ˇˇˇ˛ˇ˝
  12076. ˇˇˇˇˇˇ¸ˇˇˇ˛ˇˇÂˇèˇ˝Å•ˇ†ˇèˇ˝Åߡˇüˇèˇ˝ÅÅ√ˇèˇ˝3πˇ˛ˇ›ˇ˛ˇˇ˛ˇ˛ö˛˘ˇ¸ˇÒ˛˚ˇ˛Õˇèˇ˝û∫ˇ˛ˇˇˇ¸ˇ˛ˇˇˇ˛ˇˇˇ˛ˇˇˇ˛ˇˇ˛˝ˇ˛ˇˇˇ˛˛ˇˇˇˇˇÀˇˇˇˇ˛˝ˇˇˇˇ˛ˇˇˇˇˇ˛˛ˇ˛˛ˇˇˇˇ˛ˇˇˇˇˇ˛ˇ˛ˇˇˇ˛ˇ’ˇ¯°ˇ¯ˇ˝∫ˇ¸"ˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ˛ˇˇ˛ˇˇˇˇˇˇ˛ ˇˇˇˇˇˇˇ ˇˇˇˇˇˇˇˇˇˇ˝ˇˇˇˇˇˇˇˇˇˇ˛ˇˇˇˇˇˇˇˇˇˇˇˇ’ˇ¯_ˇˇ¯ˇ˝ ∫˛¸"ˇˇˇ˛ˇˇ˛ˇ˛ˇ˛ˇˇ˛ˇˇˇ˛˛˛ˇ˛ˇˇˇˇˇˇ˛ˇ˛ˇ˛˛ˇ˛ ˛ˇ˛ˇˇ˛ˇ˛ˇ˛˛ˇˇ˛ˇˇ˛ˇˇ˛ˇˇˇˇ˛ˇˇ˛ˇ˛ˇˇ˛ˇˇˇ˛ˇ˛ˇ¸
  12077. 
  12078. ›ˇ¯^ˇ˛ˇ˙ˇ˝∫ˇ˛ˇˇˇˇˇˇˇˇˇˇˇˇˇ˝ˇˇˇ˛ˇˇˇˇˇˇˇˇˇˇˇˇ˛ˇ ˇˇ˝ˇˇˇˇˇ˚ˇˇˇ˝ ˇˇˇˇˇ¸ˇˇˇˇˇˇˇˇˇˇˇˇˇ˙8
  12079. 
  12080. 8·ˇ¯^ˇ˛ˇ˙ˇ˝ π˛ˇ˛    ˇˇˇˇˇ˛ˇˇˇˇˇˇˇˇˇˇ˛ˇˇ˝ˇˇˇ˛ˇ˛ˇˇˇˇˇÕˇ˛ˇˇ˛˚ˇˇˇ˛ˇ˛ˇˇˇ˛˛ˇ˛˛ˇˇˇˇ˛ˇˇˇˇ˛ˇˇˇˇˇˇˇˇ˘
  12081.  
  12082. 8
  12083. Êˇ¯^ˇ˛ˇ˙ˇ˝á©ˇ–ˇ∫ˇ—ˇ„˛
  12084. 
  12085. Ρ¯^ˇ˛ˇ˙ˇ˝à©ˇ“ˇˇπˇ—ˇfi8
  12086. 
  12087. 8
  12088. ˇ¯^ˇ˛ˇ˙ˇ˝{ÅÅ’
  12089.  
  12090. 8
  12091.  
  12092. ıˇ¯^ˇ˛ˇ˙ˇ˝yÅÅ–˛
  12093. 
  12094. ˘ˇ¯^ˇ˛ˇ˙ˇ˝}ñÅ∏8
  12095. 
  12096. 8
  12097. ˛ˇ¯^ˇ˛ˇ˙ˇ˝yñ
  12098. Å≥
  12099.  
  12100. 8
  12101.  
  12102. ˘^ˇ˛ˇ˙ˇ˝zñ
  12103. ÅØˇ˛
  12104. 
  12105.  
  12106. ˛^ˇ˛ˇ˙ˇ˝vñ8ÅØˇ¸
  12107. ˇ¸ˇNˇˇˇˇˇˇˇˇˇ˛ˇ˙ˇ˝tñÅØˇ¯^ˇˇˇˇˇˇˇˇˇˇˇˇˇˇ˛ˇ˙ˇ˝tñ
  12108. ÅØˇ¯^ˇ˛ˇˇˇˇ˛ˇ˛ˇ˛ˇˇ˛ˇ˙ˇ˝sñÅØˇ¯ˇˇˇˇ˝ˇFˇˇˇˇˇˇˇˇˇ˛ˇ˙ˇ˝sñ
  12109. ÅØˇ¯ˇˇˇˇ˝ˇFˇˇˇˇˇˇˇˇˇ˛ˇ˙ˇ˝tñ
  12110. ÅØˇ¯^ˇˇˇ˛ˇˇ˛˛ˇ˛ˇ˛ˇˇˇ˛ˇ˙ˇ˝tñ8ÅØˇ¯^ˇ˛ˇ˙ˇ˝òÅ∂@ĵHHQo8 ¬Ä˛ˇˇˇˇˇˇˇˇˇˇÃÃˇˇˇˇôôˇˇˇˇffˇˇˇˇ33ˇˇˇˇˇˇÃÃˇˇˇˇÃÃÃÃˇˇÃÃôô    ˇˇÃÃff
  12111. ˇˇÃÃ33 ˇˇÃà ˇˇôôˇˇ
  12112. ˇˇôôÃÃˇˇôôôôˇˇôôffˇˇôô33ˇˇôôˇˇffˇˇˇˇffÃÃˇˇffôôˇˇffffˇˇff33ˇˇffˇˇ33ˇˇˇˇ33ÃÃˇˇ33ôôˇˇ33ffˇˇ3333ˇˇ33ˇˇˇˇˇˇÃàˇˇôô!ˇˇff"ˇˇ33#ˇˇ$ÃÃˇˇˇˇ%ÃÃˇˇÃÃ&ÃÃˇˇôô'ÃÃˇˇff(ÃÃˇˇ33)ÃÃˇˇ*ÃÃÃÃˇˇ+ÃÃÃÃÃÃ,ÃÃÃÃôô-ÃÃÃÃff.ÃÃÃÃ33/ÃÃÃÃ0ÃÃôôˇˇ1ÃÃôôÃÃ2ÃÃôôôô3ÃÃôôff4ÃÃôô335ÃÃôô6ÃÃffˇˇ7ÃÃffÃÃ8ÃÃffôô9ÃÃffff:ÃÃff33;ÃÃff<ÃÃ33ˇˇ=ÃÃ33ÃÃ>ÃÃ33ôô?ÃÃ33ff@ÃÃ3333AÃÃ33BÃÃˇˇCÃÃÃÃDÃÃôôEÃÃffFÃÃ33GÃÃHôôˇˇˇˇIôôˇˇÃÃJôôˇˇôôKôôˇˇffLôôˇˇ33MôôˇˇNôôÃÃˇˇOôôÃÃÃÃPôôÃÃôôQôôÃÃffRôôÃÃ33SôôÃÃTôôôôˇˇUôôôôÃÃVôôôôôôWôôôôffXôôôô33YôôôôZôôffˇˇ[ôôffÃÃ\ôôffôô]ôôffff^ôôff33_ôôff`ôô33ˇˇaôô33ÃÃbôô33ôôcôô33ffdôô3333eôô33fôôˇˇgôôÃÃhôôôôiôôffjôô33kôôlffˇˇˇˇmffˇˇÃÃnffˇˇôôoffˇˇffpffˇˇ33qffˇˇrffÃÃˇˇsffÃÃÃÃtffÃÃôôuffÃÃffvffÃÃ33wffÃÃxffôôˇˇyffôôÃÃzffôôôô{ffôôff|ffôô33}ffôô~ffffˇˇffffÃÃÄffffôôÅffffffÇffff33ÉffffÑff33ˇˇÖff33ÃÃÜff33ôôáff33ffàff3333âff33äffˇˇãffÃÃåffôôçfffféff33èffê33ˇˇˇˇë33ˇˇÃÃí33ˇˇôôì33ˇˇffî33ˇˇ33ï33ˇˇñ33ÃÃˇˇó33ÃÃÃÃò33ÃÃôôô33ÃÃffö33ÃÃ33õ33ÃÃú33ôôˇˇù33ôôÃÃû33ôôôôü33ôôff†33ôô33°33ôô¢33ffˇˇ£33ffÃç33ffôô•33ffff¶33ff33ß33ff®3333ˇˇ©3333ÃÙ3333ôô´3333ff¨333333≠3333Æ33ˇˇØ33ÃÃ∞33ôô±33ff≤3333≥33¥ˇˇˇˇµˇˇÃÃ∂ˇˇôô∑ˇˇff∏ˇˇ33πˇˇ∫ÃÃˇˇªÃÃÃúÃÃôôΩÃÃffæÃÃ33øÃÿôôˇˇ¡ôôÃìôôôô√ôôffƒôô33≈ôôΔffˇˇ«ffÃûffôô…ffff ff33ÀffÃ33ˇˇÕ33ÃÃŒ33ôôœ33ff–3333—33“ˇˇ”ÃÑôô’ff÷33◊ÿˇˇˇŸ˘`˘`˘`⁄Ú–Ú–Ú–€Ï@Ï@Ï@‹Â∞Â∞Â∞›fl fl fl fiÿêÿêÿêfl“““‡ÀpÀpÀp·ƒ‡ƒ‡ƒ‡‚æPæPæP„∑¿∑¿∑¿‰±0±0±0™†™†™†Ê§§§ÁùÄùÄùÄËñññÈê`ê`ê`Íâ–â–â–ÎÉ@É@É@Ï|∞|∞|∞Ìv v v ÓoêoêoêÔiiibpbpbpÒ[‡[‡[‡ÚUPUPUPÛN¿N¿N¿ÙH0H0H0ıA†A†A†ˆ;;;˜4Ä4Ä4į---˘'`'`'`˙ – – –˚@@@¸∞∞∞˝
  12113.  
  12114.  
  12115.  ˛êêê@ĵr6≤Î'tñÅØˇ¯^ˇ˛ˇ˙ˇ˝tñ
  12116. ÅØˇ¯^ˇ˛ˇ˙ˇ˝rñÅØˇ¯    ˇ¸ˇOˇˇˇˇ˛ˇ˙ˇ˝oñ
  12117. ÅØˇ¯ˇˇˇ˛ˇˇˇ˚ˇˇˇ¸ˇ'ˇ˛ˇ˙ˇ˝tñ
  12118. ÅØˇ¯^ˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ˛ˇ˙ˇ˝qñ8ÅØˇ¯ˇˇˇˇˇ¸ˇ˝ˇ<ˇˇˇˇˇˇˇˇˇ˛ˇ˙ˇ˝sñÅØˇ¯ˇˇˇˇˇˇˇ˝ˇ<ˇˇˇˇˇˇˇˇ˛ˇ˙ˇ˝{¬ˇ◊
  12119. Õ¬ˇ¢ˇ¯^ˇˇˇ˛ˇˇˇˇˇˇˇˇ˛ˇ˛ˇˇ˛ˇ˙ˇ˝ˆ@ˇˇ◊Õ>ˇˇ¢ˇ¯^ˇˇˇ˛ˇ˙ˇ˝¯?ˇ˛ˇŸ
  12120. Õ=ˇ˛ˇ§ˇ¯^ˇˇˇˇ˛ˇ˙ˇ˝¯?ˇ˛ˇŸ
  12121. Õ=ˇ˛ˇ§ˇ¯^ˇ˛ˇ˙ˇ˝¯?ˇ˛ˇŸ8Õ=ˇ˛ˇ§ˇ¯
  12122. ˇ˛ˇPˇˇˇˇ˛ˇ˙ˇ˝¯?ˇ˛ˇŸÕ=ˇ˛ˇ§ˇ¯ˇˇˇˇˇ˛ˇ˛ˇ˛ˇ=ˇˇˇˇ˛ˇ˙ˇ˝¯?ˇ˛ˇŸ
  12123. Õ=ˇ˛ˇ§ˇ¯^ˇˇ˛˛ˇˇ˛ˇ˛ˇˇˇ˛ˇ˛ˇ˙ˇ˝ˆ?ˇ˛ˇŸÕ=ˇ˛ˇ§ˇ¯ ˇ˛ˇˇˇˇˇˇˇˇˇ˝ˇ˝ˇ0˛ˇ˙ˇ˝˜?ˇ˛ˇŸ
  12124. Õ=ˇ˛ˇ§ˇ¯)ˇˇˇˇˇˇˇˇˇˇˇˇˇ˝ˇ0˛ˇ˙ˇ˝¯?ˇ˛ˇŸ
  12125. Õ=ˇ˛ˇ§ˇ¯ˇˇˇ˛ˇˇ˛ˇ˛ˇ˛ˇ˛ˇ=ˇ˛˛ˇ˙ˇ˝¯?ˇ˛ˇŸ8Õ=ˇ˛ˇ§ˇ¯^ˇˇˇ˛ˇ˙ˇ˝¯?ˇ˛ˇŸÕ=ˇ˛ˇ§ˇ¯^ˇˇˇˇ˛ˇ˙ˇ˝¯?ˇ˛ˇŸ
  12126. Õ=ˇ˛ˇ§ˇ¯^ˇ˛ˇ˙ˇ˝¯?ˇ˛ˇŸÕ=ˇ˛ˇ§ˇ¯^ˇˇˇˇˇˇˇˇˇˇ˛ˇ˙ˇ˝¯?ˇ˛ˇŸ
  12127. Õ=ˇ˛ˇ§ˇ¯ˇˇˇˇˇˇˇ˛ˇˇˇˇˇˇˇˇˇ˛ˇˇˇˇˇˇˇˇˇˇˇ˛ˇ˛ˇˇˇ˛ˇ˙ˇ˝¯?ˇ˛ˇŸ
  12128. Õ=ˇ˛ˇ§ˇ¯Eˇˇˇˇˇˇˇ˛ˇˇˇˇˇˇ˛ˇˇˇ˛ˇˇ˛ˇ˛ˇˇ˛ˇ˛˛ˇ˙ˇ˝ı?ˇˇˇˇˇˇ˛ˇŸ8Õ ˇ˛ˇ-ˇ˛ˇ§ˇ¯ˇˇˇˇ˛ˇ ˇˇˇˇˇ˛ˇˇˇˇˇˇˇ¸ˇ˝ˇˇˇˇˇˇˇˇˇ˛ˇ˙ˇ˝ıˇˇˇ˛ˇ˛ˇˇˇˇˇˇˇˇˇˇˇˇ˛ˇ ˛ˇŸÕˇˇˇˇˇ¸ˇ˛ˇˇˇ˛ˇˇˇ˛ˇ ˇˇ˛ˇ§ˇ¯:ˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ˝ˇˇˇˇˇˇˇˇ˛ˇ˙ˇ˝¯?ˇˇˇˇ˛ˇ˛ˇˇˇ˛ˇ˛ˇ˛ˇ˛ˇ˛˛ˇŸ
  12129. Õ=ˇˇˇˇˇˇˇˇ˛ˇˇˇ˛ˇˇˇˇˇ˛ˇ§ˇ¯Gˇˇˇˇˇ˛ˇˇ˛ˇ˛ˇ˛ˇˇ˛ˇ˛ˇ˛ˇˇ˛˛ˇˇˇˇ˛˛ˇˇˇ˛ˇ˛ˇ˙ˇ˝Ûˇ˚ˇ*ˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ˛ˇŸÕ)ˇˇˇˇˇˇˇˇˇˇˇˇˇ¸ˇˇˇ˛ˇ§ˇ¯^ˇˇˇ˛ˇ˙ˇ˝¯?ˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ˛ˇŸ
  12130. Õ=ˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ˛ˇ§ˇ¯^ˇˇˇ˛ˇ˙ˇ˝¯?ˇˇˇˇ˛ˇˇ˛ˇˇˇ˛ˇ˛ˇˇ˛ˇ˛ˇ˛ˇ˛ˇŸ
  12131. Õ=ˇ˛ˇˇˇˇˇˇˇˇ˛ˇˇˇ˛ˇˇˇˇˇˇ˛ˇ§ˇ¯^ˇ˛ˇ˙ˇ˝¯?ˇˇˇ˛ˇŸ8Õ=ˇˇ˛ˇ§ˇ¯^ˇ˛ˇ˙ˇ˝¯?ˇˇˇ˛ˇŸÕ=ˇˇ˛ˇ§ˇ¯^ˇ˛ˇ˙ˇ˝¯?ˇ˛ˇŸ
  12132. Õ=ˇ˛ˇ§ˇ¯^ˇ˛ˇ˙ˇ˝¯?ˇ˛ˇŸÕ=ˇˇˇˇˇ˛ˇ§ˇ¯^ˇ˛ˇ˙ˇ˝¯?ˇ˛ˇŸ
  12133. Õˇˇˇˇˇˇˇ˛ˇˇˇ˛ˇˇˇˇˇ˛ˇ§ˇ¯^ˇ˛ˇ˙ˇ˝¯?ˇ˛ˇŸ
  12134. Õ!ˇˇ˛˛ˇ˛ˇˇˇ˛ˇˇ˛ˇ˛˛ˇ§ˇ¯^ˇ˛ˇ˙ˇ˝ˆ?ˇ˛ˇŸ8Õˇˇˇˇ˛ˇˇˇˇˇˇˇˇˇ¸ˇ˛ˇ§ˇ¯^ˇ˛ˇ˙ˇ˝¯?ˇ˛ˇŸÕ=ˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ˛ˇ§ˇ¯^ˇ˛ˇ˙ˇ˝¯?ˇ˛ˇŸ
  12135. Õˇˇ˛ˇ˛ˇ"ˇˇˇˇ˛ˇˇ˛ˇ˛ˇ˛ˇ§ˇ¯^ˇ˛ˇ˙ˇ˝¯?ˇ˛ˇŸÕ=ˇˇ˛ˇ§ˇ¯^ˇ˛ˇ˙ˇ˝ò?ˇ˛ˇŸ
  12136. Õ=ˇˇˇ˛ˇ§ˇ¯üˇ˙ˇ˝ò?ˇ˛ˇŸ
  12137. Õ=ˇ˛ˇ§ˇˆ°ˇ˙ˇ˝ò?ˇ˛ˇŸ8Õ=ˇ˛ˇ§ˇˆ°ˇ˙ˇ˝î?ˇ˛ˇŸÕ=ˇ˛ˇ§ˇèˇ˝î?ˇ˛ˇŸ
  12138. Õ=ˇ˛ˇ§ˇèˇ˝î?ˇ˛ˇŸÕ=ˇ˛ˇ§ˇèˇ˝î?ˇ˛ˇŸ
  12139. Õ=ˇ˛ˇ§ˇèˇ˝î?ˇ˛ˇŸ
  12140. Õ=ˇ˛ˇ§ˇèˇ˝ê?ˇ˛ˇ§=ˇ˛ˇ§ˇèˇ˝ê?ˇˇˇ˛ˇ§=ˇ˛ˇ§ˇèˇ˝èˇ˝ˇ˛ˇ§=ˇ˛ˇ§ˇèˇ˝ê?ˇˇˇˇˇ˛ˇ§=ˇ˛ˇ§ˇèˇ˝Öˇˇˇ˝ˇˇ˛ˇ§ˇ˙ˇ¯ˇ˛ˇ§ˇèˇ˝±ˇˇˇ˚ˇˇ˛ˇ˚˛˛ˇ˛ÎˇÙˇˇ˛ˇŸˇ˛ˇ˝ ˇˇˇˇ˚ˇ˛ˇ˙ˇ˛˛ˇÏˇÙˇ˛˝ˇ⁄ˇèˇ˝Δˇ˛ˇ˘ˇˇ˛ˇ˘ˇˇ˛˛ˇˇˇˆ˚ˇ˛ˇˇ¸ˇˇŸˇˇ˚ ˇˇˇ˚ˇˇ˛ˇ¯ˇˇ˛˛ˇ˛ˇˇ˜ˇ¸ˇ˛ˇˇ¸ˇˇ⁄ˇèˇ˝æˇˇˇˆˇˇ˛ˇ˘ˇ˛
  12141. ˇˇˇˇˇˇˆˇˇˇ˝ˇˇˇˇˇ◊ˇˇ˙ıˇ˙ˇ˛ˇ¯ˇˇˇˇˇˇˇˆˇˇˇ˝ˇˇˇˇˇ◊ˇèˇ˝«ˇˇˇÙˇˇ˛ˇ˘˛˛
  12142. ˛ˇˇˇˇ˛ˇˇ˛ˇˇ˛ˇ˝ˇ˛ˇˇˇ˛ˇ˛ˇ◊ˇˇÁˇ˛ˇ¯ˇˇ˛ˇ˛ˇˇ˛ˇ˛˛ˇ˛˝ˇˇˇ˛ˇˇˇˇ˛◊ˇèˇ˝æˇˇˇÚˇˇ˛ˇ˘ˇ˛ˇˇˇˇˇ˚˝ˇ˝ˇˇˇˇˇˇˇˇ◊ˇˇ˘¯ˇ¯ˇ˛ˇ¯ ˇˇˇˇˇˇ˚˝ˇ˝ˇˇˇˇˇˇˇˇ◊ˇèˇ˝¥ˇˇˇˇˇ˛ˇ˘ˇ˝ˇ˛ˇˇˇıˇˇˇ˛˛ˇˇˇˇ◊ˇˇ˚˜ˇ˜ˇ˛ˇ¯ˇ˛ˇ˛ˇ˛ˇˇıˇˇˇ˛˛ˇˇˇˇ◊ˇèˇ˝~ˇˇˇÓˇˇ˛ˇÙˇˇ¥ˇˇ˚˜ˇˇˇ˚ˇ˛ˇÙˇˇ¥ˇèˇ˝}ˇˇˇÏˇˇ˛ˇıˇˇˇ¥ˇˇ¸¸ˇ¯ˇ˚ˇ˛ˇıˇˇˇ¥ˇèˇ˝qˇˇˇÍˇˇ˛ˇ§ˇˇ¸˛ˇ˚ˇ˛˛ˇ¸ˇ˛ˇ§ˇèˇ˝óˇˇˇËˇˇ˛ˇ˙ˇ˛ˇ˚˛˝ˇÍˇÒˇ„ˇˇ˝˝ˇ¸˘ˇ¸ˇ˛ˇ˘ˇˇ˛¸ˇ¸˛ÎˇÒ˛„ˇèˇ˝∑ˇˇˇÚ˘ˇ˝ˇˇ˛ˇ˚ˇ˛ˇˇˇ˛ˇˇˇˇ˛˛ˇˇˇˆˇÒˇ„ˇˇ˝˛ˇ¸˜ˇ˝ˇ˛ˇ˙ˇ˛ˇˇˇ˛ˇ˛ˇ˛˛ˇˇˇˆˇÒˇ„ˇèˇ˝πˇˇˇÛˇˇ˚ˇˇ˝ˇˇ˛ˇ˚ˇˇ˛ˇˇˇˇˇˇˇˇˇˇˇ«ˇˇ˝˛ˇ¸¸ˇ˝ˇ˝ˇ˛ˇ˙ˇˇ˛ˇˇˇˇˇˇˇˇˇˇˇ«ˇ¯°ˇ¯ˇ˝òÅ∂ÄÆµHHQoD √IJˇˇˇˇˇˇˇˇˇˇÃÃˇˇˇˇôôˇˇˇˇffˇˇˇˇ33ˇˇˇˇˇˇÃÃˇˇˇˇÃÃÃÃˇˇÃÃôô    ˇˇÃÃff
  12143. ˇˇÃÃ33 ˇˇÃà ˇˇôôˇˇ
  12144. ˇˇôôÃÃˇˇôôôôˇˇôôffˇˇôô33ˇˇôôˇˇffˇˇˇˇffÃÃˇˇffôôˇˇffffˇˇff33ˇˇffˇˇ33ˇˇˇˇ33ÃÃˇˇ33ôôˇˇ33ffˇˇ3333ˇˇ33ˇˇˇˇˇˇÃàˇˇôô!ˇˇff"ˇˇ33#ˇˇ$ÃÃˇˇˇˇ%ÃÃˇˇÃÃ&ÃÃˇˇôô'ÃÃˇˇff(ÃÃˇˇ33)ÃÃˇˇ*ÃÃÃÃˇˇ+ÃÃÃÃÃÃ,ÃÃÃÃôô-ÃÃÃÃff.ÃÃÃÃ33/ÃÃÃÃ0ÃÃôôˇˇ1ÃÃôôÃÃ2ÃÃôôôô3ÃÃôôff4ÃÃôô335ÃÃôô6ÃÃffˇˇ7ÃÃffÃÃ8ÃÃffôô9ÃÃffff:ÃÃff33;ÃÃff<ÃÃ33ˇˇ=ÃÃ33ÃÃ>ÃÃ33ôô?ÃÃ33ff@ÃÃ3333AÃÃ33BÃÃˇˇCÃÃÃÃDÃÃôôEÃÃffFÃÃ33GÃÃHôôˇˇˇˇIôôˇˇÃÃJôôˇˇôôKôôˇˇffLôôˇˇ33MôôˇˇNôôÃÃˇˇOôôÃÃÃÃPôôÃÃôôQôôÃÃffRôôÃÃ33SôôÃÃTôôôôˇˇUôôôôÃÃVôôôôôôWôôôôffXôôôô33YôôôôZôôffˇˇ[ôôffÃÃ\ôôffôô]ôôffff^ôôff33_ôôff`ôô33ˇˇaôô33ÃÃbôô33ôôcôô33ffdôô3333eôô33fôôˇˇgôôÃÃhôôôôiôôffjôô33kôôlffˇˇˇˇmffˇˇÃÃnffˇˇôôoffˇˇffpffˇˇ33qffˇˇrffÃÃˇˇsffÃÃÃÃtffÃÃôôuffÃÃffvffÃÃ33wffÃÃxffôôˇˇyffôôÃÃzffôôôô{ffôôff|ffôô33}ffôô~ffffˇˇffffÃÃÄffffôôÅffffffÇffff33ÉffffÑff33ˇˇÖff33ÃÃÜff33ôôáff33ffàff3333âff33äffˇˇãffÃÃåffôôçfffféff33èffê33ˇˇˇˇë33ˇˇÃÃí33ˇˇôôì33ˇˇffî33ˇˇ33ï33ˇˇñ33ÃÃˇˇó33ÃÃÃÃò33ÃÃôôô33ÃÃffö33ÃÃ33õ33ÃÃú33ôôˇˇù33ôôÃÃû33ôôôôü33ôôff†33ôô33°33ôô¢33ffˇˇ£33ffÃç33ffôô•33ffff¶33ff33ß33ff®3333ˇˇ©3333ÃÙ3333ôô´3333ff¨333333≠3333Æ33ˇˇØ33ÃÃ∞33ôô±33ff≤3333≥33¥ˇˇˇˇµˇˇÃÃ∂ˇˇôô∑ˇˇff∏ˇˇ33πˇˇ∫ÃÃˇˇªÃÃÃúÃÃôôΩÃÃffæÃÃ33øÃÿôôˇˇ¡ôôÃìôôôô√ôôffƒôô33≈ôôΔffˇˇ«ffÃûffôô…ffff ff33ÀffÃ33ˇˇÕ33ÃÃŒ33ôôœ33ff–3333—33“ˇˇ”ÃÑôô’ff÷33◊ÿˇˇˇŸ˘`˘`˘`⁄Ú–Ú–Ú–€Ï@Ï@Ï@‹Â∞Â∞Â∞›fl fl fl fiÿêÿêÿêfl“““‡ÀpÀpÀp·ƒ‡ƒ‡ƒ‡‚æPæPæP„∑¿∑¿∑¿‰±0±0±0™†™†™†Ê§§§ÁùÄùÄùÄËñññÈê`ê`ê`Íâ–â–â–ÎÉ@É@É@Ï|∞|∞|∞Ìv v v ÓoêoêoêÔiiibpbpbpÒ[‡[‡[‡ÚUPUPUPÛN¿N¿N¿ÙH0H0H0ıA†A†A†ˆ;;;˜4Ä4Ä4į---˘'`'`'`˙ – – –˚@@@¸∞∞∞˝
  12145.  
  12146.  
  12147.  ˛êêêÄÆµ≤6‡Î' ˇˇˇıˇˇ˘ˇˇ˛ˇˇ˛ˇ¯ˇ˛ˇˇˇˇˇˇ˛ˇ˛˛ˇ˛˛˛˛ˇŒˇˇ˝˛ˇ˛˚ˇ˛˛ˇ˝ˇ˛ˇ˜ˇˇ˛ˇ˛ˇˇ˛ˇˇˇˇ˛ˇˇ˛ˇˇ˛ˇŒˇ¯_ˇˇ¯ˇ˝ˇˇˇˆ˚ˇ¸ˇˇˇˇ˛ˇ˚ˇ˛ˇˇˇˇˇˇˇˇˇˇˇ˚˝ˇŒˇˇ˝˛ˇ˝˝ˇ˝˛ˇ˝ˇ˛ˇ˙ˇ˛ˇˇˇˇˇˇˇˇˇˇˇ˚˝ˇŒˇ¯^ˇ˛ˇ˙ˇ˝ ˇˇˇ˙Ùˇ¸ˇ˛ˇ˙˛ˇ˛ˇ˛ˇˇ˛ˇ˛ˇˇˇΔˇˇ˝˝ˇ˜˝ˇ˝ˇ˛ˇ˘˛ˇ˛ˇ˛ˇ˛ˇˇ˛ˇˇˇΔˇ¯^ˇ˛ˇ˙ˇ˝‡ˇˇˇ˚Ùˇ˛˝ˇ˛ˇËˇˇ¿ˇˇ˝˝ˇ˜˛ˇ¸ˇ˛ˇËˇˇ¿ˇ¯^ˇ˛ˇ˙ˇ˝„ˇˇˇ˘˚ˇ˙˝ˇ˛ˇÈˇˇˇ¿ˇˇ¸˝ˇ˘¸ˇ˝ˇ˛ˇÈˇˇˇ¿ˇ¯^ˇ˛ˇ˙ˇ˝◊ˇˇˇ˘ˇˇ˜˝ˇ˛ˇ§ˇˇ¸¸ˇ¸˘ˇ˛ˇ˛ˇ§ˇ¯^ˇ˛ˇ˙ˇ˝ˇˇˇ˘˛ˇ˘˝ˇ˛ˇ˚˛ˇ˛ˇˇÛˇ˜˛Í˛ÛˇˇÙˇˇ˚˚ˇ˜ˇ˛ˇ˛ˇ˙ˇ˛˛˛ˇÛ˛¯ˇÈˇÛˇˇÙˇ¯^ˇ˛ˇ˙ˇ˝^ˇˇˇ¯˘ˇ˝ˇ˛ˇ˚ˇˇ˛ˇˇˇˇ˛ˇ
  12148. ˇˇˇˇˇˇ˛ˇˇ˛ˇ ˇˇˇˇˇˇˇ¯ˇˇˇ˛ˇ˛ˇˇˇÙˇˇ˙Òˇ˛ˇ˛ˇ˙ˇˇ˛˝ˇ˛ˇˇˇˇˇˇˇˇˇ˛ˇ ˇˇˇˇˇˇˇ˜ˇˇˇ˛ˇ˛ˇˇˇÙˇ¯^ˇ˛ˇ˙ˇ˝Yˇˇˇˆˇˇ˚ˇ˛ˇ˚ˇˇ˛ˇˇ˛ˇ!ˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇÛ˛ˇˇˇˇˇÚˇˇ¯˙ˇ¸ˇ˝ˇ˛ˇ˙ˇˇ˛ ˇˇˇˇˇˇˇˇ˛ˇ˛ˇˇˇˇˇˇˇˇˇÛ ˇˇˇˇˇˇˇÛˇ¯^ˇ˛ˇ˙ˇ˝kˇˇˇ¯ˇˇ¸ˇ˛ˇ˚ˇ˛ˇ˛ˇˇ˛ˇˇˇ˛ˇ˛ˇˇˇ˝
  12149. ˇˇˇˇˇˇ˛ˇˇ˛ˇ˛ˇˇ¸
  12150. ˛ˇˇ˛ˇˇ˛ˇÚˇˇˇˆ˛ˇ˜ˇˇ˛ˇ˙ˇˇˇˇ˛ˇ˛ˇ˛ˇ˛ˇˇ˛ˇˇ˝˛ˇˇˇ˛ˇ˛ˇ˝ˇˇ˛ˇ˝ˇˇˇˇˇˇˇ˛Ûˇ¯^ˇ˛ˇ˙ˇ˝gˇˇˇ˙ˇˇ˝ˇ˛ˇ˚(ˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ˝ˇ˛˝ˇ¸
  12151. ˇˇˇˇˇˇˇÚˇ¯ˇ˙˜ˇ˛ˇ˙ˇˇˇˇˇˇˇˇˇ˛ˇˇˇˇˇˇˇˇˇˇ˛ˇ˝˝ˇ˝ˇˇˇˇˇˇˇÛˇ¯^ˇ˛ˇ˙ˇ˝dˇˇˇ¸ˇˇ˛ˇ˚ˇˇˇ˝ˇˇ˛ˇˇ˛ˇˇˇ˝ˇˇ˛ˇˇˇÙ˚ˇ˛ˇˇÚˇˇˇ˙ˇˇ˛ˇ˙ˇˇ˝ˇˇˇ˛ˇ˛ˇ˛ˇˇˇ˝ˇˇ˛ˇˇˇÙ˛ˇ˛ˇ˛ˇˇÛˇ¯
  12152. ˇ¸ˇNˇˇˇˇˇˇˇˇ˛ˇ˙ˇ˝˚ˇˇˇ˛ˇˇ˛ˇΩˇ˝ˇÓˇıˇ˛ˇºˇ˛ˇÓˇ¯^ˇˇˇˇˇ˛ˇˇˇˇˇˇˇˇ˛ˇ˙ˇ˝ ?ˇˇˇˇˇ˛ˇΩˇ˝ˇ˘ˇ˜=ˇ˛ˇºˇ˛ˇ¯ˇ¯ˇ¯^ˇˇˇˇˇˇˇˇˇˇˇˇ˛ˇ˙ˇ˝˚ˇ˛ˇ˛ˇØ˝ˇ˙=ˇ˛ˇÆ˛ˇ˙ˇ¯ˇˇˇˇ˝ˇFˇˇˇˇˇˇˇˇ˛ˇ˙ˇ˝¸?ˇ˛ˇÆ¸ˇ¸=ˇ˛ˇ≠¸ˇ˝ˇ¯ˇ˛ˇˇ˛ˇG˛ˇˇ˛ˇ˛ˇ˛˛˛ˇ˙ˇ˝˙?ˇ˛ˇ˛´ˇ˝=ˇ˛ˇ˛™ˇ˛ˇ¯
  12153. ˇ¸ˇNˇˇˇˇˇˇˇˇ˛ˇ˙ˇ˝¸?ˇ˛ˇÆ¸ˇ¸=ˇ˛ˇ≠¸ˇ˝ˇ¯^ˇ˛ˇ˙ˇ˝¸?ˇ˛ˇØ˝ˇ˙=ˇ˛ˇÆ˛ˇ˙ˇ¯^ˇ˛ˇ˙ˇ˝¸?ˇ˛ˇØˇ˜=ˇ˛ˇÆˇ¯ˇ¯^ˇ˛ˇ˙ˇ˝Ú?ˇ˛ˇ§=ˇ˛ˇ§ˇ¯    ˇ¸ˇOˇˇˇˇ˛ˇ˙ˇ˝˝?ˇ˛ˇ¯ˇˇØ=ˇ˛ˇ¯ˇÆˇ¯'ˇˇ˛˛ˇˇˇˇˇˇ˛˛ˇˇ˛ˇ˛˛ˇ'ˇ˛ˇ˙ˇ˝¸?ˇ˛ˇ˙˛ˇÆ=ˇ˛ˇ˚˝ˇÆˇ¯^ˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ˛ˇ˙ˇ˝˘?ˇ˛ˇ¸¸ˇÆ=ˇ˛ˇ˝¸ˇ≠ˇ¯ˇˇˇˇˇ¸ˇ˝ˇ<ˇˇˇˇˇˇˇˇˇ˛ˇ˙ˇ˝¸?ˇ˛ˇ˝¨ˇ˝=ˇ˛ˇ˛´ˇ˝ˇ¯ˇˇˇˇˇˇˇ˛ˇ=˛ˇˇˇ˛ˇˇˇˇ˛ˇ˙ˇ˝¸?ˇ˛ˇ¸¸ˇÆ=ˇ˛ˇ˝¸ˇ≠ˇ¯ˇˇˇ˛ˇˇˇˇˇˇ˛ˇ-ˇˇˇ˛ˇ˙ˇ˝¸?ˇ˛ˇ˙˛ˇÆ=ˇ˛ˇ˚˝ˇÆˇ¯^ˇˇˇ˛ˇ˙ˇ˝˝?ˇ˛ˇ¯ˇˇØ=ˇ˛ˇ¯ˇÆˇ¯^ˇˇˇ˛˛ˇ˙ˇ˝Ù?ˇ˛ˇ§=ˇ˛ˇ§ˇ¯^ˇ˛ˇ˙ˇ˝ ?ˇ˛ˇ·ˇ˛ˇˇˇˇ˛ˇˇˇˇ◊=ˇ˛ˇ‡ˇˇˇ˛ˇˇˇˇ˛ˇˇÿˇ¯
  12154. ˇ˛ˇPˇˇˇˇ˛ˇ˙ˇ˝$?ˇ˛ˇ‚ˇˇˇ˛ˇ˛ˇˇˇˇÿ=ˇ˛ˇ·˛ˇˇˇ˛ˇ˛ˇˇ˛Ÿˇ¯ˇˇˇˇ˛ˇ˛ˇˇ˛ˇ˛ˇ=ˇ˛ˇˇ˛ˇ˙ˇ˝"?ˇ˛ˇ·ˇˇˇˇˇˇˇˇˇÿ=ˇ˛ˇ‡ˇˇˇˇˇˇˇˇˇŸˇ¯^ˇˇˇˇˇˇˇˇˇˇˇˇˇˇ˛ˇ˙ˇ˝ ?ˇ˛ˇ·ˇˇˇˇˇˇˇˇˇÿ=ˇ˛ˇ‡ˇˇˇˇˇˇˇˇˇŸˇ¯ ˇ˛ˇˇˇˇˇˇˇˇˇ˝ˇ˝ˇ0˛ˇ˙ˇ˝•¿ˇ·˛ˇˇˇˇ˛ˇ˛ˇÿ¿ˇ‡ˇˇ˛ˇˇˇˇˇˇŸˇ¯^ˇˇˇ˛ˇˇ˛ˇ˛ˇˇˇ˛ˇ˛ˇˇ˛ˇ˙ˇ˝¢˝¬ˇ·ˇ˛ˇˇˇˇ˛ˇˇˇˇ’¬ˇ‡ˇˇˇ˛ˇˇˇˇ˛ˇˇÿˇ¯
  12155. ˇ˛ˇ˛ˇ˛ˇˇˇ˛ˇ=ˇˇ˛ˇ˙ˇ˝v˝¬ˇ¢¬ˇ§ˇ¯^ˇˇˇ˛ˇ˙ˇ˝rÅÅ√ˇ¯^ˇˇˇˇ˛ˇ˙ˇ˝rÅÅ√ˇ¯^ˇ˛ˇ˙ˇ˝zÖ
  12156.  
  12157. Ÿ
  12158. »ˇ¯^ˇˇˇˇˇˇˇˇˇˇ˛ˇ˙ˇ˝xÑ˛
  12159. Ş
  12160. «ˇ¯^ˇˇ˛˛ˇˇ˛ˇˇ˛ˇˇˇ˛ˇˇˇ˛ˇˇ˛ˇ˛ˇ˛ˇˇ˛ˇˇˇ˛ˇ˛ˇ˛ˇˇ˛ˇ˛ˇ˙ˇ˝zÅ
  12161. 8
  12162. Ö
  12163. 8≈ˇ¯ˇˇˇˇˇ˛ˇ:ˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ˛ˇ
  12164. ˛ˇ˙ˇ˝yÅ
  12165.  
  12166. 8â
  12167.  
  12168. √ˇ¯ˇˇˇˇ˛ˇ ˇˇˇˇˇ˛ˇˇˇˇˇˇˇ¸ˇ˝ˇˇˇˇˇˇˇˇˇ˛ˇ˙ˇ˝zÅ˝
  12169.  
  12170. ç˛
  12171. ¡ˇ¯^ˇˇˇˇˇ˛ˇ˛ˇˇˇˇˇˇ˛ˇˇˇ˛ˇˇˇˇˇ˛ˇˇˇ˛ˇ˛ˇ˛ˇˇ˛ˇ˙ˇ˝{Å˚
  12172. 8
  12173. í
  12174. 8øˇ¯ˇˇˇˇ˝ˇˇ˛ˇˇ˛ˇˇˇ˝ˇˇˇˇˇ˛ˇˇˇˇˇˇˇ˛ˇ˙ˇ˝|ů
  12175. 8ñ
  12176.  
  12177. Ωˇ¯^ˇˇ˛ˇ˙ˇ˝zň
  12178. 
  12179. ö˛
  12180. ªˇ¯^ˇˇˇ˛ˇ˙ˇ˝ò8@µ@µ‡6 ÎĈ˘ıˇ¿@Ô‡ˆp˘ıˇ¿@Ô8ˆ¿˘ıˇ¿@Ô˜Ģıˇ¿@Ô¿¯¯ıˇ¿@Óp¯8¯ıˇ¿@Ó¯‡¯ıˇ¿@ÓÄ˙įıˇ¿@̇˙˜ıˇ¿@Ì8˙8˜ıˇ¿@Ì˙‡˜ıˇ¿@Ì¿¸Ęıˇ¿@Ïp¸ˆıˇ¿@ϸ8ˆ?ˆˇ¿@ÏÄ˝‡ˆ?ˆˇ¿@·˛ĈÛ@Î8˛ıÛ@Î8ıÛ@ο?ćıÛ@ÍpÉÄı˚Ä˚@ͬÙ˚Ä˚@Èˇ¿ÙÛ@Èˇ¿ÙÛ@È¿ÙÛ@ÈÄÙÛ@È?ÄÙÛ@
  12181. ÈÛÛ@⁄˚Ä˚@⁄˚Ä˚@    ⁄Û@    ⁄Û@    ⁄Û@È˝#˘Û@È    "oúŒgcs∞¸Û@È     öì*ï#Q¶`¸Û@È     öì*ı"≠V߇¸˚Ä˚@È    "öì*Ö"©T¶ ¸˚Ä˚@È    jú e"OSù†¸Û@Á¸˚Û@Á¸˚Û@    ⁄Û@Ë ‡˝˝ıˇ@È
  12182. 3t¯ÉÃf}Δ„s˝ıˇ@È
  12183. $¥©$ôU)§—˝ıˇ¿@È
  12184. '¥®É$âU)ß—˝ıˇ¿@È
  12185. $4®C$ôU)§Q˝ıˇ¿@È
  12186. #<®É‡ƒfUΔ£Q˝ıˇ¿@‚˙ıˇ¿@‚˙ıˇ¿@ ⁄ıˇ¿@Ȇ˜ıˇ¿@È6
  12187. Œ¶ng¯ıˇ¿@È)©6ï¯ıˇ¿@È)®÷ï¯ıˇ¿@È)©ñï¯ıˇ¿@ÈŒ¶ve@˘ıˇ¿@Ëııˇ¿@Ëııˇ¿@ ⁄ıˇ¿@ ⁄ıˇ¿@ ⁄ıˇ¿@ ⁄ıˇ¿@ ⁄ıˇ¿@ ⁄ıˇ¿@ò8@ĵ@ĵ 6`Î ⁄ıˇ¿@ ⁄ıˇ¿@ ⁄ıˇ¿@ ⁄ıˇ¿@ ⁄ıˇ¿@ ⁄ıˇ¿@ ⁄ıˇ¿@ ⁄ıˇ¿@ ⁄ıˇ¿@ ⁄ıˇ¿@ ⁄ıˇ¿@ ⁄ıˇ¿@ ⁄ıˇ¿@ ⁄ıˇ¿@ ⁄ıˇ¿@ ⁄ıˇ¿@ ⁄ıˇ¿@ ⁄ıˇ¿@ ⁄ıˇ¿@ ⁄ıˇ¿@ ⁄ıˇ¿@ ⁄ıˇ¿@ ⁄ıˇ¿@ ⁄ıˇ¿@ ⁄ıˇ¿@ ⁄ıˇ¿@ ⁄ıˇ¿@ ⁄ıˇ¿@ ⁄ıˇ¿@ ⁄ıˇ¿@ ⁄ıˇ¿@ ⁄ıˇ¿@ ⁄ıˇ¿@ ⁄ıˇ¿@ ⁄ıˇ¿@ ⁄ıˇ¿@ ⁄?ˆˇ¿@ ⁄?ˆˇ¿@    ⁄Û@    ⁄Û@    ⁄Û@    ⁄Û@    ⁄Û@    ⁄Û@    ⁄Û@    ⁄Û@    ⁄Û@    ⁄Û@    ⁄Ûˇ¿………………………………………ò8ÄÆµÄƵ`6éÎ…………………………………………………………………………………………………………………………òÅ∂@µHHQo8 ƒÄ˛ˇˇˇˇˇˇˇˇˇˇÃÃˇˇˇˇôôˇˇˇˇffˇˇˇˇ33ˇˇˇˇˇˇÃÃˇˇˇˇÃÃÃÃˇˇÃÃôô    ˇˇÃÃff
  12188. ˇˇÃÃ33 ˇˇÃà ˇˇôôˇˇ
  12189. ˇˇôôÃÃˇˇôôôôˇˇôôffˇˇôô33ˇˇôôˇˇffˇˇˇˇffÃÃˇˇffôôˇˇffffˇˇff33ˇˇffˇˇ33ˇˇˇˇ33ÃÃˇˇ33ôôˇˇ33ffˇˇ3333ˇˇ33ˇˇˇˇˇˇÃàˇˇôô!ˇˇff"ˇˇ33#ˇˇ$ÃÃˇˇˇˇ%ÃÃˇˇÃÃ&ÃÃˇˇôô'ÃÃˇˇff(ÃÃˇˇ33)ÃÃˇˇ*ÃÃÃÃˇˇ+ÃÃÃÃÃÃ,ÃÃÃÃôô-ÃÃÃÃff.ÃÃÃÃ33/ÃÃÃÃ0ÃÃôôˇˇ1ÃÃôôÃÃ2ÃÃôôôô3ÃÃôôff4ÃÃôô335ÃÃôô6ÃÃffˇˇ7ÃÃffÃÃ8ÃÃffôô9ÃÃffff:ÃÃff33;ÃÃff<ÃÃ33ˇˇ=ÃÃ33ÃÃ>ÃÃ33ôô?ÃÃ33ff@ÃÃ3333AÃÃ33BÃÃˇˇCÃÃÃÃDÃÃôôEÃÃffFÃÃ33GÃÃHôôˇˇˇˇIôôˇˇÃÃJôôˇˇôôKôôˇˇffLôôˇˇ33MôôˇˇNôôÃÃˇˇOôôÃÃÃÃPôôÃÃôôQôôÃÃffRôôÃÃ33SôôÃÃTôôôôˇˇUôôôôÃÃVôôôôôôWôôôôffXôôôô33YôôôôZôôffˇˇ[ôôffÃÃ\ôôffôô]ôôffff^ôôff33_ôôff`ôô33ˇˇaôô33ÃÃbôô33ôôcôô33ffdôô3333eôô33fôôˇˇgôôÃÃhôôôôiôôffjôô33kôôlffˇˇˇˇmffˇˇÃÃnffˇˇôôoffˇˇffpffˇˇ33qffˇˇrffÃÃˇˇsffÃÃÃÃtffÃÃôôuffÃÃffvffÃÃ33wffÃÃxffôôˇˇyffôôÃÃzffôôôô{ffôôff|ffôô33}ffôô~ffffˇˇffffÃÃÄffffôôÅffffffÇffff33ÉffffÑff33ˇˇÖff33ÃÃÜff33ôôáff33ffàff3333âff33äffˇˇãffÃÃåffôôçfffféff33èffê33ˇˇˇˇë33ˇˇÃÃí33ˇˇôôì33ˇˇffî33ˇˇ33ï33ˇˇñ33ÃÃˇˇó33ÃÃÃÃò33ÃÃôôô33ÃÃffö33ÃÃ33õ33ÃÃú33ôôˇˇù33ôôÃÃû33ôôôôü33ôôff†33ôô33°33ôô¢33ffˇˇ£33ffÃç33ffôô•33ffff¶33ff33ß33ff®3333ˇˇ©3333ÃÙ3333ôô´3333ff¨333333≠3333Æ33ˇˇØ33ÃÃ∞33ôô±33ff≤3333≥33¥ˇˇˇˇµˇˇÃÃ∂ˇˇôô∑ˇˇff∏ˇˇ33πˇˇ∫ÃÃˇˇªÃÃÃúÃÃôôΩÃÃffæÃÃ33øÃÿôôˇˇ¡ôôÃìôôôô√ôôffƒôô33≈ôôΔffˇˇ«ffÃûffôô…ffff ff33ÀffÃ33ˇˇÕ33ÃÃŒ33ôôœ33ff–3333—33“ˇˇ”ÃÑôô’ff÷33◊ÿˇˇˇŸ˘`˘`˘`⁄Ú–Ú–Ú–€Ï@Ï@Ï@‹Â∞Â∞Â∞›fl fl fl fiÿêÿêÿêfl“““‡ÀpÀpÀp·ƒ‡ƒ‡ƒ‡‚æPæPæP„∑¿∑¿∑¿‰±0±0±0™†™†™†Ê§§§ÁùÄùÄùÄËñññÈê`ê`ê`Íâ–â–â–ÎÉ@É@É@Ï|∞|∞|∞Ìv v v ÓoêoêoêÔiiibpbpbpÒ[‡[‡[‡ÚUPUPUPÛN¿N¿N¿ÙH0H0H0ıA†A†A†ˆ;;;˜4Ä4Ä4į---˘'`'`'`˙ – – –˚@@@¸∞∞∞˝
  12190.  
  12191.  
  12192.  ˛êêê@µ‡6 Î'}ÅÙ8
  12193. 
  12194. ü
  12195. 8πˇ¯^ˇ˛ˇ˙ˇ˝|ÅÒ8
  12196. £
  12197.  
  12198. ∑ˇ¯^ˇ˛ˇ˙ˇ˝{ÅÔ
  12199.  
  12200. ¶
  12201.  
  12202. µˇ¯^ˇ˛ˇ˙ˇ˝|ÅÌ
  12203. 
  12204. ™
  12205. 8
  12206. ¥ˇ¯^ˇ˛ˇ˙ˇ˝}ÅÎ8
  12207.  
  12208. Ø
  12209.  
  12210. 8≤ˇ¯^ˇ˛ˇ˙ˇ˝zÅ˲
  12211. ≥
  12212.  
  12213. ∞ˇ¯^ˇ˛ˇ˙ˇ˝|ÅÊ
  12214. 8∑
  12215. 8
  12216. Æˇ¯^ˇ˛ˇ˙ˇ˝}ʼn
  12217.  
  12218. 8º
  12219.  
  12220. 8¨ˇ¯^ˇ˛ˇ˙ˇ˝|Å·
  12221.  
  12222. ¿
  12223.  
  12224. ™ˇ¯^ˇ˛ˇ˙ˇ˝|Åfl
  12225. 8
  12226. ƒ
  12227. 8
  12228. ®ˇ¯^ˇ˛ˇ˙ˇ˝|Å›
  12229.  
  12230. 8»
  12231.  
  12232. 8¶ˇ¯^ˇ˛ˇ˙ˇ˝}Å€
  12233.  
  12234. 
  12235. Õ
  12236.  
  12237. §ˇ¯^ˇ˛ˇ˙ˇ˝Åÿ8
  12238. —
  12239. 8
  12240. ¢ˇ¯üˇ˙ˇ˝Å÷
  12241. 8’
  12242.  
  12243. 8†ˇˆ°ˇ˙ˇ˝Å‘
  12244. 
  12245.  
  12246. ⁄
  12247.  
  12248. ûˇˆ°ˇ˙ˇ˝Å—
  12249. 
  12250. fi
  12251. 8
  12252. úˇèˇ˝Åœ8
  12253. ‚
  12254.  
  12255. 8öˇèˇ˝ÅÕ
  12256.  
  12257. Ùı
  12258.  
  12259. òˇèˇ˝!ÅÀ
  12260. 
  12261. 8¯˘
  12262. 8
  12263. ñˇèˇ˝(Å»
  12264.  
  12265. ¸¸
  12266.  
  12267. 8ˇˇ…ˇ˝#ÅΔ
  12268.  
  12269. ¸˛ˇ˚íˇ…ˇˇ…ˇ˝Å¿˝ˇçˇèˇ˝Åøˇˇãˇèˇ˝Å¿ˇ˛çˇèˇ˝Å¿ˇˇãˇèˇ˝ÅΩåˇèˇ˝Ūäˇèˇ˝ÅÅ√ˇ…ˇˇ…ˇ˝ÅÅ√ˇ…ˇˇ…ˇ˝ÅÅ√ˇèˇ˝ÅÅ√ˇèˇ˝ÅÅ√ˇèˇ˝ Åæˇˇ˛›ˇ˛ˇˇ˛ˇˇ∏ˇèˇ˝TÅøˇ˛ˇˇˇ¸ˇ˛ˇˇˇ˛ˇˇˇ˛ˇˇˇ˛ˇˇ˛˝ˇ˛ˇˇˇ˛˛ˇˇˇˇˇœˇèˇ˝VÅøˇ¸"ˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ˛ˇˇ˛ˇˇˇˇˇˇ˛ ˇˇˇˇˇˇˇŒˇèˇ˝ZÅøˇ¸ˇ˛ˇˇˇ˛ˇ˛ˇˇˇ˛ˇ˛ˇ˛ˇ˛ˇˇˇˇˇ˛ˇ˛ˇˇˇˇˇˇ˛˛ˇŒˇ…˛ˇ…ˇ˝\Åøˇ˛ˇˇˇˇˇˇˇˇˇˇˇˇˇ˝ˇˇˇ˛ˇˇˇˇˇˇˇˇˇˇˇˇ˛ˇŒˇ…ˇˇ…ˇ˝TÅæ˛ˇ˛    ˇˇˇˇˇ˛ˇˇˇˇˇˇˇˇˇˇ˛ˇˇ˝ˇˇˇ˛ˇ˛ˇˇˇˇŒˇèˇ˝ÅÆˇ–˛…ˇèˇ˝ÅÆˇ“ˇˇ»ˇèˇ˝ÅÅ√ˇèˇ˝#Å∑ˇÓˇ˛˛ˇ˜ˇÿ˛€ˇ¯°ˇ¯ˇ˝æÅøˇˇˇˇ˛ˇˇ¸ˇ˛ˇ¸ˇˇ˛ˇ˝ˇˇˇˇ˛ˇˇˇˇ¸ˇ˛ˇ˛ˇˇ˛ˇ˛ˇˇ˛ˇˇˇ€ˇ¯_ˇˇ¯ˇ˝ΔÅøˇˇˇˇˇˇˇˇˇˇ˚ˇˇ˛ˇ˛,ˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ˛ˇ€ˇ¯^ˇ˛ˇ˙ˇ˝«Åøˇ˛˛ˇ ˇˇ˛ˇˇˇ˛ˇ¸ˇˇ˛ˇ˛    ˇˇ˛ˇ˛ˇˇ˛ˇ˛ˇˇˇˇˇˇ˛˛ˇ˛ˇ˛ˇ€ˇ¯^ˇ˛ˇ˙ˇ˝ΔÅøˇˇ˝
  12270. ˇˇˇˇˇˇ˝ˇ˝ˇˇ˛ˇ˛&ˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ˛ˇˇ˛ˇ€ˇ¯^ˇ˛ˇ˙ˇ˝øÅøˇ˛ˇˇ˝ˇˇˇˇ˛ˇ¸¸ˇ¸ˇˇ˛ˇ˛
  12271. ˇˇˇˇˇˇˇ˛ˇ˛ˇˇˇˇ˛ˇˇˇˇ˛ˇ€ˇ¯^ˇ˛ˇ˙ˇ˝tÅDz√ˇ¯^ˇ˛ˇ˙ˇ˝tÅǡ√ˇ¯^ˇ˛ˇ˙ˇ˝rÅÅ√ˇ¯^ˇ˛ˇ˙ˇ˝ÅæˇÌˇˇ˜˛ˇ™ˇ¯^ˇ˛ˇ˙ˇ˝ûÅøˇˇˇˇ¸ˇˇ˛ˇ˛ˇ ˇˇˇˇˇˇ˛ˇˇˇ˛ˇ≥ˇ¯^ˇ˛ˇ˙ˇ˝ùÅæˇˇˇ¸˛ˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ≥ˇ¯^ˇ˛ˇ˙ˇ˝†Åæ˛ˇ˛˛˛ˇˇ˛ˇˇ˛ˇˇˇ˛ˇˇ˛ˇˇˇ˛ˇ˛≥ˇ¯ ˇ˛˛ˇO˛˛ˇ˙ˇ˝†Åæˇˇˇ˛$ˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ≥ˇ¯ˇˇˇˇ˛ˇ˛ˇ˛ˇ˛ˇ˛ˇ.˛ˇ˙ˇ˝úÅæˇˇˇ¸˚ˇ˛ˇ    ˇˇˇˇ˛ˇ
  12272. ˇˇˇˇˇˇˇµˇ¯^ˇˇˇˇˇˇˇˇˇˇˇˇˇˇ˛ˇ˙ˇ˝xÅ≤ˇ˝ˇòˇ¯^ˇˇˇˇˇ˛ˇˇˇ˛ˇˇˇˇˇˇ˛ˇ˛ˇ˙ˇ˝wÅ≤ˇ˝ˇòˇ¯ˇˇˇˇ˝ˇFˇˇˇˇˇˇˇˇˇˇ˛ˇ˙ˇ˝pÅÅ√ˇ¯
  12273. ˇ¸ˇNˇˇˇˇˇˇˇˇˇˇ˛ˇ˙ˇ˝rÅÅ√ˇ¯^ˇ˛ˇ˙ˇ˝rÅÅ√ˇ¯^ˇ˛ˇ˙ˇ˝rÅÅ√ˇ¯^ˇ˛ˇ˙ˇ˝rÅÅ√ˇ¯    ˇ˛ˇQ˛ˇ˛ˇˇ˛ˇ˛ˇ˙ˇ˝qÅÅ√ˇ¯ˇˇˇ˛ˇˇˇ˝ˇˇˇˇ˛ˇ*ˇ˛ˇ˙ˇ˝òÅ∂@ĵHHQoD ≈IJˇˇˇˇˇˇˇˇˇˇÃÃˇˇˇˇôôˇˇˇˇffˇˇˇˇ33ˇˇˇˇˇˇÃÃˇˇˇˇÃÃÃÃˇˇÃÃôô    ˇˇÃÃff
  12274. ˇˇÃÃ33 ˇˇÃà ˇˇôôˇˇ
  12275. ˇˇôôÃÃˇˇôôôôˇˇôôffˇˇôô33ˇˇôôˇˇffˇˇˇˇffÃÃˇˇffôôˇˇffffˇˇff33ˇˇffˇˇ33ˇˇˇˇ33ÃÃˇˇ33ôôˇˇ33ffˇˇ3333ˇˇ33ˇˇˇˇˇˇÃàˇˇôô!ˇˇff"ˇˇ33#ˇˇ$ÃÃˇˇˇˇ%ÃÃˇˇÃÃ&ÃÃˇˇôô'ÃÃˇˇff(ÃÃˇˇ33)ÃÃˇˇ*ÃÃÃÃˇˇ+ÃÃÃÃÃÃ,ÃÃÃÃôô-ÃÃÃÃff.ÃÃÃÃ33/ÃÃÃÃ0ÃÃôôˇˇ1ÃÃôôÃÃ2ÃÃôôôô3ÃÃôôff4ÃÃôô335ÃÃôô6ÃÃffˇˇ7ÃÃffÃÃ8ÃÃffôô9ÃÃffff:ÃÃff33;ÃÃff<ÃÃ33ˇˇ=ÃÃ33ÃÃ>ÃÃ33ôô?ÃÃ33ff@ÃÃ3333AÃÃ33BÃÃˇˇCÃÃÃÃDÃÃôôEÃÃffFÃÃ33GÃÃHôôˇˇˇˇIôôˇˇÃÃJôôˇˇôôKôôˇˇffLôôˇˇ33MôôˇˇNôôÃÃˇˇOôôÃÃÃÃPôôÃÃôôQôôÃÃffRôôÃÃ33SôôÃÃTôôôôˇˇUôôôôÃÃVôôôôôôWôôôôffXôôôô33YôôôôZôôffˇˇ[ôôffÃÃ\ôôffôô]ôôffff^ôôff33_ôôff`ôô33ˇˇaôô33ÃÃbôô33ôôcôô33ffdôô3333eôô33fôôˇˇgôôÃÃhôôôôiôôffjôô33kôôlffˇˇˇˇmffˇˇÃÃnffˇˇôôoffˇˇffpffˇˇ33qffˇˇrffÃÃˇˇsffÃÃÃÃtffÃÃôôuffÃÃffvffÃÃ33wffÃÃxffôôˇˇyffôôÃÃzffôôôô{ffôôff|ffôô33}ffôô~ffffˇˇffffÃÃÄffffôôÅffffffÇffff33ÉffffÑff33ˇˇÖff33ÃÃÜff33ôôáff33ffàff3333âff33äffˇˇãffÃÃåffôôçfffféff33èffê33ˇˇˇˇë33ˇˇÃÃí33ˇˇôôì33ˇˇffî33ˇˇ33ï33ˇˇñ33ÃÃˇˇó33ÃÃÃÃò33ÃÃôôô33ÃÃffö33ÃÃ33õ33ÃÃú33ôôˇˇù33ôôÃÃû33ôôôôü33ôôff†33ôô33°33ôô¢33ffˇˇ£33ffÃç33ffôô•33ffff¶33ff33ß33ff®3333ˇˇ©3333ÃÙ3333ôô´3333ff¨333333≠3333Æ33ˇˇØ33ÃÃ∞33ôô±33ff≤3333≥33¥ˇˇˇˇµˇˇÃÃ∂ˇˇôô∑ˇˇff∏ˇˇ33πˇˇ∫ÃÃˇˇªÃÃÃúÃÃôôΩÃÃffæÃÃ33øÃÿôôˇˇ¡ôôÃìôôôô√ôôffƒôô33≈ôôΔffˇˇ«ffÃûffôô…ffff ff33ÀffÃ33ˇˇÕ33ÃÃŒ33ôôœ33ff–3333—33“ˇˇ”ÃÑôô’ff÷33◊ÿˇˇˇŸ˘`˘`˘`⁄Ú–Ú–Ú–€Ï@Ï@Ï@‹Â∞Â∞Â∞›fl fl fl fiÿêÿêÿêfl“““‡ÀpÀpÀp·ƒ‡ƒ‡ƒ‡‚æPæPæP„∑¿∑¿∑¿‰±0±0±0™†™†™†Ê§§§ÁùÄùÄùÄËñññÈê`ê`ê`Íâ–â–â–ÎÉ@É@É@Ï|∞|∞|∞Ìv v v ÓoêoêoêÔiiibpbpbpÒ[‡[‡[‡ÚUPUPUPÛN¿N¿N¿ÙH0H0H0ıA†A†A†ˆ;;;˜4Ä4Ä4į---˘'`'`'`˙ – – –˚@@@¸∞∞∞˝
  12276.  
  12277.  
  12278.  ˛êêê@ĵ 6`Î'rÅÅ√ˇ¯.ˇˇˇˇˇˇˇˇˇˇˇ˛ˇ,ˇ˛ˇ˙ˇ˝rÅÅ√ˇ¯ˇˇˇˇ˛ˇ˛˛ˇCˇ˛ˇˇˇˇ˛ˇˇˇˇ˛˛ˇ˙ˇ˝qÅÅ√ˇ¯ˇˇˇˇˇˇˇ˝ˇ<ˇˇˇˇˇˇˇ˛ˇ˙ˇ˝qÅÅ√ˇ¯ˇˇˇ˛ˇˇˇ˛ˇˇ˝ˇ,ˇ˛ˇ˙ˇ˝rÅÅ√ˇ¯^ˇ˛ˇ˛ˇ˙ˇ˝rÅÅ√ˇ¯^ˇˇˇˇ˛ˇ˙ˇ˝rÅÅ√ˇ¯^ˇ˛ˇ˙ˇ˝rÅÅ√ˇ¯^ˇ˛ˇˇˇˇˇ˛˛˛ˇ˙ˇ˝rÅÅ√ˇ¯ˇˇˇˇˇ˛ˇ˛ˇ˛ˇ=ˇˇˇˇˇˇˇˇˇˇ˛ˇ˙ˇ˝rÅÅ√ˇ¯^ˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ˛ˇ˙ˇ˝rÅÅ√ˇ¯)ˇ˛ˇˇ˛ˇˇ˛ˇ˛ˇ˛ˇˇ˛ˇ˛ˇ1˛ˇˇˇ˛ˇ˛ˇ˙ˇ˝qÅÅ√ˇ¯)ˇˇˇˇˇˇˇˇˇˇˇˇˇ˝ˇ0ˇˇˇˇˇ˛ˇ˙ˇ˝rÅÅ√ˇ¯
  12279. ˇ˛ˇ˛ˇ˛ˇˇˇ˛ˇ=ˇˇˇˇˇˇˇ˛ˇ˙ˇ˝rÅÅ√ˇ¯^ˇˇˇ˛ˇ˙ˇ˝rÅÅ√ˇ¯^ˇˇˇˇ˛ˇ˙ˇ˝rÅÅ√ˇ¯^ˇ˛ˇ˙ˇ˝rÅÅ√ˇ¯^ˇˇˇˇˇˇˇˇ˛ˇ˛ˇ˙ˇ˝rÅÅ√ˇ¯ˇˇˇˇˇˇˇ˛ˇˇˇˇˇˇˇˇˇ˛ˇˇˇˇˇˇˇˇˇˇˇ˛ˇ˛ˇˇˇ˛ˇ˙ˇ˝rÅÅ√ˇ¯ˇˇˇˇˇ˛ˇ/ˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ˛ˇˇˇˇˇ˛ˇ˙ˇ˝rÅÅ√ˇ¯ˇˇˇˇ˛ˇ ˇˇ˛ˇˇ˛ˇˇ˛ˇˇ˛ˇ˛ˇ˛˛ˇ˛˛ˇˇˇ˛ˇ˛ˇˇˇ˛ˇ˙ˇ˝qÅÅ√ˇ¯:ˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ˝ˇˇˇˇˇˇˇˇ˛ˇ˙ˇ˝mÅÅ√ˇ¯ˇˇˇˇ˝ˇˇ˛ˇˇ˛ˇˇˇ˝ˇˇˇˇˇ˚ˇ˛ˇˇ˛ˇ˙ˇ˝rÅÅ√ˇ¯^ˇˇ˛˛ˇ˙ˇ˝rÅÅ√ˇ¯^ˇˇˇ˛ˇ˙ˇ˝rÅÅ√ˇ¯^ˇ˛ˇ˙ˇ˝rÅÅ√ˇ¯^ˇ˛ˇ˙ˇ˝rÅÅ√ˇ¯^ˇ˛ˇ˙ˇ˝rÅÅ√ˇ¯^ˇ˛ˇ˙ˇ˝rÅÅ√ˇ¯^ˇ˛ˇ˙ˇ˝rÅÅ√ˇ¯^ˇ˛ˇ˙ˇ˝rÅÅ√ˇ¯^ˇ˛ˇ˙ˇ˝rÅÅ√ˇ¯^ˇ˛ˇ˙ˇ˝rÅÅ√ˇ¯^ˇ˛ˇ˙ˇ˝rÅÅ√ˇ¯^ˇ˛ˇ˙ˇ˝rÅÅ√ˇ¯^ˇ˛ˇ˙ˇ˝ÅÅ√ˇ¯üˇ˙ˇ˝ÅÅ√ˇˆ°ˇ˙ˇ˝ÅÅ√ˇˆ°ˇ˙ˇ˝ÅÅ√ˇèˇ˝ÅÅ√ˇèˇ˝ÅÅ√ˇèˇ˝ÅÅ√ˇèˇ˝ÅÅ√ˇèˇ˝ÅÅ√ˇèˇ˝ÅÅ√ˇèˇ˝ÅÅ√ˇèˇ˝ÅÅ√ˇèˇ˝ÅÅ√ˇèˇ˝
  12280. ÅÅ√硽ÅÅÅÀÅÅÅÀÅÅÅÀÅÅÅÀÅÅÅÀÅÅÅÀÅÅÅÀÅÅÅÀÅÅÅÀÅÅÅÀÅÅÅÀÅÅÅÀÅÅÅÀÅÅÅÀÅÅÅÀòÅ∂ÄÆµHHQo8 ΔIJˇˇˇˇˇˇˇˇˇˇÃÃˇˇˇˇôôˇˇˇˇffˇˇˇˇ33ˇˇˇˇˇˇÃÃˇˇˇˇÃÃÃÃˇˇÃÃôô    ˇˇÃÃff
  12281. ˇˇÃÃ33 ˇˇÃà ˇˇôôˇˇ
  12282. ˇˇôôÃÃˇˇôôôôˇˇôôffˇˇôô33ˇˇôôˇˇffˇˇˇˇffÃÃˇˇffôôˇˇffffˇˇff33ˇˇffˇˇ33ˇˇˇˇ33ÃÃˇˇ33ôôˇˇ33ffˇˇ3333ˇˇ33ˇˇˇˇˇˇÃàˇˇôô!ˇˇff"ˇˇ33#ˇˇ$ÃÃˇˇˇˇ%ÃÃˇˇÃÃ&ÃÃˇˇôô'ÃÃˇˇff(ÃÃˇˇ33)ÃÃˇˇ*ÃÃÃÃˇˇ+ÃÃÃÃÃÃ,ÃÃÃÃôô-ÃÃÃÃff.ÃÃÃÃ33/ÃÃÃÃ0ÃÃôôˇˇ1ÃÃôôÃÃ2ÃÃôôôô3ÃÃôôff4ÃÃôô335ÃÃôô6ÃÃffˇˇ7ÃÃffÃÃ8ÃÃffôô9ÃÃffff:ÃÃff33;ÃÃff<ÃÃ33ˇˇ=ÃÃ33ÃÃ>ÃÃ33ôô?ÃÃ33ff@ÃÃ3333AÃÃ33BÃÃˇˇCÃÃÃÃDÃÃôôEÃÃffFÃÃ33GÃÃHôôˇˇˇˇIôôˇˇÃÃJôôˇˇôôKôôˇˇffLôôˇˇ33MôôˇˇNôôÃÃˇˇOôôÃÃÃÃPôôÃÃôôQôôÃÃffRôôÃÃ33SôôÃÃTôôôôˇˇUôôôôÃÃVôôôôôôWôôôôffXôôôô33YôôôôZôôffˇˇ[ôôffÃÃ\ôôffôô]ôôffff^ôôff33_ôôff`ôô33ˇˇaôô33ÃÃbôô33ôôcôô33ffdôô3333eôô33fôôˇˇgôôÃÃhôôôôiôôffjôô33kôôlffˇˇˇˇmffˇˇÃÃnffˇˇôôoffˇˇffpffˇˇ33qffˇˇrffÃÃˇˇsffÃÃÃÃtffÃÃôôuffÃÃffvffÃÃ33wffÃÃxffôôˇˇyffôôÃÃzffôôôô{ffôôff|ffôô33}ffôô~ffffˇˇffffÃÃÄffffôôÅffffffÇffff33ÉffffÑff33ˇˇÖff33ÃÃÜff33ôôáff33ffàff3333âff33äffˇˇãffÃÃåffôôçfffféff33èffê33ˇˇˇˇë33ˇˇÃÃí33ˇˇôôì33ˇˇffî33ˇˇ33ï33ˇˇñ33ÃÃˇˇó33ÃÃÃÃò33ÃÃôôô33ÃÃffö33ÃÃ33õ33ÃÃú33ôôˇˇù33ôôÃÃû33ôôôôü33ôôff†33ôô33°33ôô¢33ffˇˇ£33ffÃç33ffôô•33ffff¶33ff33ß33ff®3333ˇˇ©3333ÃÙ3333ôô´3333ff¨333333≠3333Æ33ˇˇØ33ÃÃ∞33ôô±33ff≤3333≥33¥ˇˇˇˇµˇˇÃÃ∂ˇˇôô∑ˇˇff∏ˇˇ33πˇˇ∫ÃÃˇˇªÃÃÃúÃÃôôΩÃÃffæÃÃ33øÃÿôôˇˇ¡ôôÃìôôôô√ôôffƒôô33≈ôôΔffˇˇ«ffÃûffôô…ffff ff33ÀffÃ33ˇˇÕ33ÃÃŒ33ôôœ33ff–3333—33“ˇˇ”ÃÑôô’ff÷33◊ÿˇˇˇŸ˘`˘`˘`⁄Ú–Ú–Ú–€Ï@Ï@Ï@‹Â∞Â∞Â∞›fl fl fl fiÿêÿêÿêfl“““‡ÀpÀpÀp·ƒ‡ƒ‡ƒ‡‚æPæPæP„∑¿∑¿∑¿‰±0±0±0™†™†™†Ê§§§ÁùÄùÄùÄËñññÈê`ê`ê`Íâ–â–â–ÎÉ@É@É@Ï|∞|∞|∞Ìv v v ÓoêoêoêÔiiibpbpbpÒ[‡[‡[‡ÚUPUPUPÛN¿N¿N¿ÙH0H0H0ıA†A†A†ˆ;;;˜4Ä4Ä4į---˘'`'`'`˙ – – –˚@@@¸∞∞∞˝
  12283.  
  12284.  
  12285.  ˛êêêÄÆµ`6éÎ'ÅÅÅÀÅÅÅÀÅÅÅÀÅÅÅÀÅÅÅÀÅÅÅÀÅÅÅÀÅÅÅÀÅÅÅÀÅÅÅÀÅÅÅÀÅÅÅÀÅÅÅÀÅÅÅÀÅÅÅÀÅÅÅÀÅÅÅÀÅÅÅÀÅÅÅÀÅÅÅÀÅÅÅÀÅÅÅÀÅÅÅÀÅÅÅÀÅÅÅÀÅÅÅÀÅÅÅÀÅÅÅÀÅÅÅÀÅÅÅÀÅÅÅÀÅÅÅÀÅÅÅÀÅÅÅÀÅÅÅÀÅÅÅÀÅÅÅÀÅÅÅÀÅÅÅÀÅÅÅÀÅÅÅÀÅÅÅÀÅÅÅÀÅÅÅÀÅÅÅÀÅÅÅÀ†è†É†ø
  12286. d,     Helvetica
  12287.     °dONLNdW6A@(]6Figure 5°dONLNd`BM•*  How Applications Find Components x4x&,Times
  12288. ({) 
  12289. +
  12290. 21
  12291. (è6 HELPFUL TIP*
  12292. 2You can obtain the component ID corresponding to a*
  12293. 3component instance by calling GetComponentInfo with*
  12294. 3the component instance (you’ll need to cast it as a*
  12295. )Component). The componentFlagsMask of the*
  12296. 5returned ComponentDescription record will contain the*
  12297. component ID.•
  12298. +Ù'1TECHNIQUES FOR WRITING AND DEBUGGING COMPONENTS  
  12299. )”
  12300. December 1992ˇ†æ°¿9pse
  12301. currentpoint
  12302. /picTop exch def
  12303. /picLeft exch def
  12304. psb
  12305. †ø†æ°¿=pse
  12306. currentpoint
  12307. /picBottom exch def
  12308. /picRight exch def
  12309. psb
  12310. †ø†æ°¿[ -372 -125 65 164]
  12311. °¿€1 dict begin /s exch def
  12312. picLeft picTop translate
  12313. picRight picLeft sub s 2 get s 0 get sub div
  12314. picBottom picTop sub s 1 get s 3 get sub div
  12315. scale
  12316. s 0 get neg s 3 get neg translate
  12317. end
  12318. /showpage {} def
  12319. /copypage {} def
  12320. °¿ %!PS-Adobe-3.0 EPSF-3.0
  12321. %%Creator: Adobe Illustrator(TM) 3.2
  12322. %%For: (Diane Wilcox) (Apple Computer, Inc.)
  12323. %%Title: (Woodcock Fig_05MSW)
  12324. %%CreationDate: (10/2/92) (1:25 PM)
  12325. %%BoundingBox: -372 -125 65 164
  12326. %%DocumentProcessColors: Magenta Black
  12327. %%DocumentFonts: Helvetica
  12328. %%+ Helvetica-Bold
  12329. %%DocumentSuppliedResources: procset Adobe_packedarray 2.0 0
  12330. %%+ procset Adobe_cmykcolor 1.1 0
  12331. %%+ procset Adobe_cshow 1.1 0
  12332. %%+ procset Adobe_customcolor 1.0 0
  12333. %%+ procset Adobe_typography_AI3 1.0 1
  12334. %%+ procset Adobe_IllustratorA_AI3 1.0 1
  12335. %AI3_ColorUsage: Color
  12336. %AI3_TemplateBox: -196 -52 -196 -52
  12337. %AI3_TileBox: -472 -417 80 313
  12338. %AI3_DocumentPreview: Macintosh_ColorPic
  12339. %%EndComments
  12340. %%BeginProlog
  12341. %%BeginResource: procset Adobe_packedarray 2.0 0
  12342. %%Title: (Packed Array Operators)
  12343. %%Version: 2.0 
  12344. %%CreationDate: (8/2/90) ()
  12345. %%Copyright: ((C) 1987-1990 Adobe Systems Incorporated All Rights Reserved)
  12346. userdict /Adobe_packedarray 5 dict dup begin put
  12347. /initialize            % - initialize -
  12348. {
  12349. /packedarray where
  12350.     {
  12351.     pop
  12352.     }
  12353.     {
  12354.     Adobe_packedarray begin
  12355.     Adobe_packedarray
  12356.         {
  12357.         dup xcheck
  12358.             {
  12359.             bind
  12360.             } if
  12361.         userdict 3 1 roll put
  12362.         } forall
  12363.     end
  12364.     } ifelse
  12365. } def
  12366. /terminate            % - terminate -
  12367. {
  12368. } def
  12369. /packedarray        % arguments count packedarray array
  12370. {
  12371. array astore readonly
  12372. } def
  12373. /setpacking            % boolean setpacking -
  12374. {
  12375. pop
  12376. } def
  12377. /currentpacking        % - setpacking boolean
  12378. {
  12379. false
  12380. } def
  12381. currentdict readonly pop end
  12382. %%EndResource
  12383. Adobe_packedarray /initialize get exec
  12384. %%BeginResource: procset Adobe_cmykcolor 1.1 0
  12385. %%Title: (CMYK Color Operators)
  12386. %%Version: 1.1 
  12387. %%CreationDate: (1/23/89) ()
  12388. %%Copyright: ((C) 1987-1990 Adobe Systems Incorporated All Rights Reserved)
  12389. currentpacking true setpacking
  12390. userdict /Adobe_cmykcolor 4 dict dup begin put
  12391. /initialize            % - initialize -
  12392. {
  12393. /setcmykcolor where
  12394.     {
  12395.     pop
  12396.     }
  12397.     {
  12398.     userdict /Adobe_cmykcolor_vars 2 dict dup begin put
  12399.     /_setrgbcolor
  12400.         /setrgbcolor load def
  12401.     /_currentrgbcolor
  12402.         /currentrgbcolor load def
  12403.     Adobe_cmykcolor begin
  12404.     Adobe_cmykcolor
  12405.         {
  12406.         dup xcheck
  12407.             {
  12408.             bind
  12409.             } if
  12410.         pop pop
  12411.         } forall
  12412.     end
  12413.     end
  12414.     Adobe_cmykcolor begin
  12415.     } ifelse
  12416. } def
  12417. /terminate            % - terminate -
  12418. {
  12419. currentdict Adobe_cmykcolor eq
  12420.     {
  12421.     end
  12422.     } if
  12423. } def
  12424. /setcmykcolor        % cyan magenta yellow black setcmykcolor -
  12425. {
  12426. 1 sub 4 1 roll
  12427. 3
  12428.     {
  12429.     3 index add neg dup 0 lt
  12430.         {
  12431.         pop 0
  12432.         } if
  12433.     3 1 roll
  12434.     } repeat
  12435. Adobe_cmykcolor_vars /_setrgbcolor get exec
  12436. pop
  12437. } def 
  12438. /currentcmykcolor    % - currentcmykcolor cyan magenta yellow black
  12439. {
  12440. Adobe_cmykcolor_vars /_currentrgbcolor get exec
  12441. 3
  12442.     {
  12443.     1 sub neg 3 1 roll
  12444.     } repeat
  12445. 0
  12446. } def
  12447. currentdict readonly pop end
  12448. setpacking
  12449. %%EndResource
  12450. %%BeginResource: procset Adobe_cshow 1.1 0
  12451. %%Title: (cshow Operator)
  12452. %%Version: 1.1 
  12453. %%CreationDate: (1/23/89) ()
  12454. %%Copyright: ((C) 1987-1990 Adobe Systems Incorporated All Rights Reserved)
  12455. currentpacking true setpacking
  12456. userdict /Adobe_cshow 3 dict dup begin put
  12457. /initialize            % - initialize -
  12458. {
  12459. /cshow where
  12460.     {
  12461.     pop
  12462.     }
  12463.     {
  12464.     userdict /Adobe_cshow_vars 1 dict dup begin put
  12465.     /_cshow        % - _cshow proc
  12466.         {} def
  12467.     Adobe_cshow begin
  12468.     Adobe_cshow
  12469.         {
  12470.         dup xcheck
  12471.             {
  12472.             bind
  12473.             } if
  12474.         userdict 3 1 roll put
  12475.         } forall
  12476.     end
  12477.     end
  12478.     } ifelse
  12479. } def
  12480. /terminate            % - terminate -
  12481. {
  12482. } def
  12483. /cshow                % proc string cshow -
  12484. {
  12485. exch
  12486. Adobe_cshow_vars
  12487.     exch /_cshow
  12488.     exch put
  12489.     {
  12490.     0 0 Adobe_cshow_vars /_cshow get exec
  12491.     } forall
  12492. } def
  12493. currentdict readonly pop end
  12494. setpacking
  12495. %%EndResource
  12496. %%BeginResource: procset Adobe_customcolor 1.0 0
  12497. %%Title: (Custom Color Operators)
  12498. %%Version: 1.0 
  12499. %%CreationDate: (5/9/88) ()
  12500. %%Copyright: ((C) 1987-1990 Adobe Systems Incorporated All Rights Reserved)
  12501. currentpacking true setpacking
  12502. userdict /Adobe_customcolor 5 dict dup begin put
  12503. /initialize            % - initialize -
  12504. {
  12505. /setcustomcolor where
  12506.     {
  12507.     pop
  12508.     }
  12509.     {
  12510.     Adobe_customcolor begin
  12511.     Adobe_customcolor
  12512.         {
  12513.         dup xcheck
  12514.             {
  12515.             bind
  12516.             } if
  12517.         pop pop
  12518.         } forall
  12519.     end
  12520.     Adobe_customcolor begin
  12521.     } ifelse
  12522. } def
  12523. /terminate            % - terminate -
  12524. {
  12525. currentdict Adobe_customcolor eq
  12526.     {
  12527.     end
  12528.     } if
  12529. } def
  12530. /findcmykcustomcolor    % cyan magenta yellow black name findcmykcustomcolor object
  12531. {
  12532. 5 packedarray
  12533. }  def
  12534. /setcustomcolor        % object tint setcustomcolor -
  12535. {
  12536. exch
  12537. aload pop pop
  12538. 4
  12539.     {
  12540.     4 index mul 4 1 roll
  12541.     } repeat
  12542. 5 -1 roll pop
  12543. setcmykcolor
  12544. } def
  12545. /setoverprint        % boolean setoverprint -
  12546. {
  12547. pop
  12548. } def
  12549. currentdict readonly pop end
  12550. setpacking
  12551. %%EndResource
  12552. %%BeginResource: procset Adobe_typography_AI3 1.1 0
  12553. %%Title: (Typography Operators)
  12554. %%Version: 1.0 
  12555. %%CreationDate:(5/31/90) ()
  12556. %%Copyright: ((C) 1987-1990 Adobe Systems Incorporated All Rights Reserved)
  12557. currentpacking true setpacking
  12558. userdict /Adobe_typography_AI3 47 dict dup begin put
  12559. /initialize            % - initialize -
  12560. {
  12561. /TZ
  12562.  where
  12563.     {
  12564.     pop
  12565.     }
  12566.     {
  12567.     Adobe_typography_AI3 begin
  12568.     Adobe_typography_AI3
  12569.         {
  12570.         dup xcheck
  12571.             {
  12572.             bind
  12573.             } if
  12574.         pop pop
  12575.         } forall
  12576.     end
  12577.     Adobe_typography_AI3 begin
  12578.     } ifelse
  12579. } def
  12580. /terminate            % - terminate -
  12581. {
  12582. currentdict Adobe_typography_AI3 eq
  12583.     {
  12584.     end
  12585.     } if
  12586. } def
  12587. % [ number value stream [ array for encoding modification ] modifyEncoding ==> [ modified array ]
  12588. /modifyEncoding
  12589. {
  12590.     /_tempEncode exch ddef
  12591.     
  12592.     % pointer for sequential encodings
  12593.     /_pntr 0 ddef
  12594.     
  12595.     {
  12596.         % get bottom object
  12597.         counttomark -1 roll
  12598.         % is it a mark ?
  12599.         dup type dup /marktype eq         
  12600.         {
  12601.             % exit
  12602.             pop pop exit
  12603.         }
  12604.         {
  12605.             % ... object ... type ....
  12606.             % insert if a nametype
  12607.             /nametype eq
  12608.             {
  12609.                 % insert the name at _pntr and increment pointer
  12610.                 _tempEncode /_pntr dup load dup 3 1 roll 1 add ddef 3 -1 roll
  12611.                 put
  12612.             }
  12613.             {
  12614.                 % reset _pntr if it's a number
  12615.                 /_pntr exch ddef                    
  12616.             }
  12617.             ifelse
  12618.         }
  12619.         ifelse
  12620.     }
  12621.     loop    
  12622.     
  12623.     % return the modified encoding
  12624.     _tempEncode
  12625. }
  12626. def
  12627. /TE    % Set std platform encoding     % (encoding pairs) TE -
  12628. {
  12629.     StandardEncoding 256 array copy modifyEncoding 
  12630.     /_nativeEncoding exch def
  12631. } def
  12632. % re-define font
  12633. % expected arguments
  12634. % for 'normal fonts : 
  12635. % [ /_Helvetica-Bold/Helvetica-Bold direction fontScript defaultEncoding TZ
  12636. %
  12637. % for cartographic, pictographic, and expert fonts :
  12638. % [ ... number value stream ... /_Symbol/Symbol 
  12639. %    direction fontScript defaultEncoding TZ
  12640. % for blended fonts w/ default encoding :
  12641. % [ /_AdobeSans_20ULig1XCond-Bold/AdobeSans 
  12642. %    direction fontScript defaultEncoding [ w0 w1 ... wn ] TZ
  12643. % for blended fonts w/ special encoding :
  12644. % [ ... number value stream ... /_AdobeSans_20ULig1XCond/AdobeSans 
  12645. %    direction fontScript defaultEncoding [ w0 w1 ... wn ] TZ
  12646. /TZ        
  12647. {
  12648.     % set weight vector (if present)
  12649.     dup type /arraytype eq {/_wv exch def} {/_wv 0 def} ifelse 
  12650.     % platform dependent coding flag
  12651.     /_useNativeEncoding exch def
  12652.     % pop fontScript & direction
  12653.     pop pop
  12654.     
  12655.     % create a new dictionary with length
  12656.     % equal to original dictionary length + 2
  12657.     % copy all the key/value pairs except FID
  12658.     % call makeblended font with the weight values if _wv is an array
  12659.     findfont _wv type /arraytype eq {_wv makeblendedfont} if dup length 2 add dict
  12660.     
  12661.     begin
  12662.     
  12663.         % copy all the values but the FID
  12664.         % into the new dictionary
  12665.         mark exch
  12666.         {
  12667.             1 index /FID ne { def } if cleartomark mark
  12668.         }
  12669.         forall
  12670.         % discard last mark
  12671.         pop
  12672.         
  12673.         % define FontName
  12674.         /FontName exch def
  12675.         
  12676.         % if no re-encoding stream is present
  12677.         % then if the base encoding vector of the font
  12678.         % is the same as StandardEncoding
  12679.         % and the use platform encoding flag is true
  12680.         % then install AI platform encoding
  12681.         % else leave the base encoding in effect
  12682.         counttomark 0 eq
  12683.         {
  12684.             1 _useNativeEncoding eq
  12685.             {
  12686.                 /Encoding _nativeEncoding def
  12687.             }
  12688.             if
  12689.             % clean up
  12690.             cleartomark
  12691.         }
  12692.         {    
  12693.             % custom encoding to be done
  12694.             % start off with a copy of the font's standard encoding
  12695.             /Encoding load 256 array copy 
  12696.             modifyEncoding /Encoding exch def
  12697.         }
  12698.         ifelse        
  12699.         FontName currentdict
  12700.     end
  12701.     
  12702.     % register the new font
  12703.     definefont pop
  12704. }
  12705. def
  12706. % text painting operators
  12707. /tr                    % string tr ax ay string 
  12708. {
  12709. _ax _ay 3 2 roll
  12710. } def
  12711. /trj                % string trj cx cy fillchar ax ay string 
  12712. {
  12713. _cx _cy _sp _ax _ay 6 5 roll
  12714. } def
  12715. /a0
  12716. {
  12717. /Tx    % text                            % textString Tx -
  12718.     {
  12719.     dup 
  12720.     currentpoint 3 2 roll
  12721.     tr _psf
  12722.     newpath moveto
  12723.     tr _ctm _pss
  12724.     } ddef
  12725. /Tj    % justified text                % textString Tj -
  12726.     {
  12727.     dup
  12728.     currentpoint 3 2 roll
  12729.     trj _pjsf
  12730.     newpath moveto
  12731.     trj _ctm _pjss
  12732.     } ddef
  12733.     
  12734. } def
  12735. /a1
  12736. {
  12737. /Tx    % text                            % textString Tx -
  12738.     {
  12739.     dup currentpoint 4 2 roll gsave
  12740.     dup currentpoint 3 2 roll
  12741.     tr _psf
  12742.     ne°¿ wpath moveto
  12743.     tr _ctm _pss
  12744.     grestore 3 1 roll moveto tr sp
  12745.     } ddef
  12746. /Tj    % justified text                % textString Tj -
  12747.     {
  12748.     dup currentpoint 4 2 roll gsave
  12749.     dup currentpoint 3 2 roll
  12750.     trj _pjsf
  12751.     newpath moveto
  12752.     trj _ctm _pjss
  12753.     grestore 3 1 roll moveto tr sp
  12754.     } ddef
  12755.     
  12756. } def
  12757. /e0
  12758. {
  12759. /Tx    % text                            % textString Tx -
  12760.     {
  12761.     tr _psf
  12762.     } ddef
  12763. /Tj    % justified text                % textString Tj -
  12764.     {
  12765.     trj _pjsf
  12766.     } ddef
  12767. } def
  12768. /e1
  12769. {
  12770. /Tx    % text                            % textString Tx -
  12771.     {
  12772.     dup currentpoint 4 2 roll gsave 
  12773.     tr _psf  
  12774.     grestore 3 1 roll moveto tr sp 
  12775.     } ddef
  12776. /Tj    % justified text                % textString Tj -
  12777.     {
  12778.     dup currentpoint 4 2 roll gsave 
  12779.     trj _pjsf
  12780.     grestore 3 1 roll moveto tr sp 
  12781.     } ddef
  12782. } def
  12783. /i0
  12784. {
  12785. /Tx    % text                            % textString Tx -
  12786.     {
  12787.     tr sp
  12788.     } ddef
  12789. /Tj    % justified text                % textString Tj -
  12790.     {
  12791.     trj jsp
  12792.     } ddef
  12793. } def
  12794. /i1
  12795. {
  12796. W N
  12797. } def
  12798. /o0
  12799. {
  12800. /Tx    % text                            % textString Tx -
  12801.     {
  12802.     tr sw rmoveto
  12803.     } ddef
  12804. /Tj    % justified text                % textString Tj -
  12805.     {
  12806.     trj swj rmoveto
  12807.     } ddef
  12808. } def
  12809. /r0
  12810. {
  12811. /Tx    % text                            % textString Tx -
  12812.     {
  12813.     tr _ctm _pss
  12814.     } ddef
  12815. /Tj    % justified text                % textString Tj -
  12816.     {
  12817.     trj _ctm _pjss
  12818.     } ddef
  12819. } def
  12820. /r1
  12821. {
  12822. /Tx    % text                            % textString Tx -
  12823.     {
  12824.     dup currentpoint 4 2 roll currentpoint gsave newpath moveto
  12825.     tr _ctm _pss 
  12826.     grestore 3 1 roll moveto tr sp 
  12827.     } ddef
  12828. /Tj    % justified text                % textString Tj -
  12829.     {
  12830.     dup currentpoint 4 2 roll currentpoint gsave newpath moveto
  12831.     trj _ctm _pjss
  12832.     grestore 3 1 roll moveto tr sp 
  12833.     } ddef
  12834. } def
  12835. % font operators
  12836. % Binding
  12837. /To    % begin text                     % bindType To -
  12838. {
  12839.     pop _ctm currentmatrix pop
  12840. } def
  12841. /TO    % end text                    % TO -
  12842. {
  12843.     Te _ctm setmatrix newpath
  12844. } def
  12845. % Text paths
  12846. /Tp    % begin text path                % a b c d tx ty startPt Tp -
  12847. {
  12848.     pop _tm astore pop _ctm setmatrix 
  12849.     _tDict begin /W {} def /h {} def
  12850. } def
  12851. /TP    % end text path                    % TP -
  12852. {
  12853.     end
  12854.     iTm 0 0 moveto
  12855. } def
  12856. % Render mode & matrix operators
  12857. /Tr    % begin render                    % render Tr - 
  12858. {
  12859.     _render 3 le {currentpoint newpath moveto} if
  12860.     dup 8 eq {pop 0} {dup 9 eq {pop 1} if} ifelse
  12861.     dup /_render exch ddef
  12862.     _renderStart exch get load exec
  12863. } def
  12864. /iTm % internal set text matrix        % - iTm -    (uses _tm as implicit argument)
  12865. {
  12866. _ctm setmatrix _tm concat 0 _rise translate _hs 1 scale
  12867. } def
  12868. /Tm % set text matrix                % a b c d tx ty Tm -
  12869. {
  12870. _tm astore pop iTm 0 0 moveto
  12871. } def
  12872. /Td % translate text matrix         % tx ty Td -
  12873. {
  12874. _mtx translate _tm _tm concatmatrix pop iTm 0 0 moveto
  12875. } def
  12876. /Te    % end render                    % - Te -
  12877. {
  12878.     _render -1 eq {} {_renderEnd _render get dup null ne {load exec} {pop} ifelse} ifelse
  12879.     /_render -1 ddef
  12880. } def
  12881. % Attributes
  12882. /Ta    % set alignment                    % alignment Ta -
  12883. {
  12884. pop
  12885. } def
  12886. /Tf    % set font name and size        % fontname size Tf -
  12887. {
  12888. dup 1000 div /_fScl exch ddef
  12889. exch findfont exch scalefont setfont
  12890. } def
  12891. /Tl    % set leading                    % leading paragraphLeading Tl -
  12892. {
  12893. pop
  12894. 0 exch _leading astore pop
  12895. } def
  12896. /Tt    % set user tracking                % userTracking Tt -
  12897. {
  12898. pop
  12899. } def
  12900. /TW % set word spacing                % minSpace optSpace maxSpace TW -
  12901. {
  12902. 3 npop
  12903. } def
  12904. /Tw    % set computed word spacing        % wordSpace Tw
  12905. {
  12906. /_cx exch ddef
  12907. } def
  12908. /TC % set character spacing            % minSpace optSpace maxSpace TC -
  12909. {
  12910. 3 npop
  12911. } def
  12912. /Tc    % set computed char spacing     % charSpace Tc -
  12913. {
  12914. /_ax exch ddef
  12915. } def
  12916. /Ts % set super/subscripting (rise)    % rise Ts -
  12917. {
  12918. /_rise exch ddef
  12919. currentpoint
  12920. iTm
  12921. moveto
  12922. } def
  12923. /Ti    % set indentation                % firstStartIndent otherStartIndent stopIndent Ti -
  12924. {
  12925. 3 npop
  12926. } def
  12927. /Tz % set horizontal scaling        % scalePercent Tz -
  12928. {
  12929. 100 div /_hs exch ddef
  12930. iTm
  12931. } def
  12932. /TA % set pairwise kerning            % autoKern TA -
  12933.                                     %    autoKern = 0 -> no pair kerning
  12934.                                     %             = 1 -> automatic pair kerning
  12935. {
  12936. pop
  12937. } def
  12938. /Tq % set hanging quotes            % hangingQuotes Tq -
  12939.                                     %    hangingQuotes     = 0 -> no hanging quotes
  12940.                                     %                     = 1 -> hanging quotes
  12941. {
  12942. pop
  12943. } def
  12944. % Text Bodies
  12945. /TX {pop} def
  12946. %/Tx    % non-justified text            % textString Tx -
  12947. %/Tj    % justified text                % textString Tj -
  12948. /Tk    % kern                            % autoKern kernValue Tk -
  12949.                                     %      autoKern = 0 -> manual kern, = 1 -> auto kern
  12950.                                     %    kernValue = kern value in em/1000 space
  12951. {
  12952. exch pop _fScl mul neg 0 rmoveto
  12953. } def
  12954. /TK    % non-printing kern                % autoKern kernValue TK -
  12955. {
  12956. 2 npop
  12957. } def
  12958. /T* % carriage return & line feed    % - T* -
  12959. {
  12960. _leading aload pop neg Td
  12961. } def
  12962. /T*- % carriage return & negative line feed    % - T*- -
  12963. {
  12964. _leading aload pop Td
  12965. } def
  12966. /T-    % print a discretionary hyphen    % - T- -
  12967. {
  12968. _hyphen Tx
  12969. } def
  12970. /T+    % discretionary hyphen hyphen    % - T+ -
  12971. {} def
  12972. /TR    % reset pattern matrix             % a b c d tx ty TR -
  12973. {
  12974. _ctm currentmatrix pop     
  12975. _tm astore pop 
  12976. iTm 0 0 moveto 
  12977. } def
  12978. /TS    % special chars                    % textString justified TS -
  12979. {
  12980. 0 eq {Tx} {Tj} ifelse
  12981. } def
  12982. currentdict readonly pop end
  12983. setpacking
  12984. %%EndResource
  12985. %%BeginResource: procset Adobe_IllustratorA_AI3 1.0 2
  12986. %%Title: (Adobe Illustrator (R) Version 3.0 Abbreviated Prolog)
  12987. %%Version: 1.0 
  12988. %%CreationDate: (7/22/89) ()
  12989. %%Copyright: ((C) 1987-1990 Adobe Systems Incorporated All Rights Reserved)
  12990. currentpacking true setpacking
  12991. userdict /Adobe_IllustratorA_AI3 61 dict dup begin put
  12992. % initialization
  12993. /initialize                % - initialize -
  12994. {
  12995. % 47 vars, but leave slack of 10 entries for custom Postscript fragments
  12996. userdict /Adobe_IllustratorA_AI3_vars 57 dict dup begin put
  12997. % paint operands
  12998. /_lp /none def
  12999. /_pf {} def
  13000. /_ps {} def
  13001. /_psf {} def
  13002. /_pss {} def
  13003. /_pjsf {} def
  13004. /_pjss {} def
  13005. /_pola 0 def
  13006. /_doClip 0 def
  13007. % paint operators
  13008. /cf    currentflat def    % - cf flatness
  13009. % typography operands
  13010. /_tm matrix def
  13011. /_renderStart [/e0 /r0 /a0 /o0 /e1 /r1 /a1 /i0] def 
  13012. /_renderEnd [null null null null /i1 /i1 /i1 /i1] def
  13013. /_render -1 def
  13014. /_rise 0 def
  13015. /_ax 0 def            % x character spacing    (_ax, _ay, _cx, _cy follows awidthshow naming convention)
  13016. /_ay 0 def            % y character spacing
  13017. /_cx 0 def            % x word spacing
  13018. /_cy 0 def            % y word spacing
  13019. /_leading [0 0] def
  13020. /_ctm matrix def
  13021. /_mtx matrix def
  13022. /_sp 16#020 def
  13023. /_hyphen (-) def
  13024. /_fScl 0 def
  13025. /_cnt 0 def
  13026. /_hs 1 def
  13027. /_nativeEncoding 0 def
  13028. /_useNativeEncoding 0 def
  13029. /_tempEncode 0 def
  13030. /_pntr 0 def
  13031. /_tDict 2 dict def
  13032. % typography operators
  13033. /Tx {} def
  13034. /Tj {} def
  13035. % compound path operators
  13036. /CRender {} def
  13037. % printing
  13038. /_AI3_savepage {} def
  13039. % color operands
  13040. /_gf null def
  13041. /_cf 4 array def
  13042. /_if null def
  13043. /_of false def
  13044. /_fc {} def
  13045. /_gs null def
  13046. /_cs 4 array def
  13047. /_is null def
  13048. /_os false def
  13049. /_sc {} def
  13050. /_i null def
  13051. Adobe_IllustratorA_AI3 begin
  13052. Adobe_IllustratorA_AI3
  13053.     {
  13054.     dup xcheck
  13055.         {
  13056.         bind
  13057.         } if
  13058.     pop pop
  13059.     } forall
  13060. end
  13061. end
  13062. Adobe_IllustratorA_AI3 begin
  13063. Adobe_IllustratorA_AI3_vars begin
  13064. newpath
  13065. } def
  13066. /terminate                % - terminate -
  13067. {
  13068. end
  13069. end
  13070. } def
  13071. % definition operators
  13072. /_                    % - _ null
  13073. null def
  13074. /ddef                % key value ddef -
  13075. {
  13076. Adobe_IllustratorA_AI3_vars 3 1 roll put
  13077. } def
  13078. /xput                % key value literal xput -
  13079. {
  13080. dup load dup length exch maxlength eq
  13081.     {
  13082.     dup dup load dup
  13083.     length 2 mul dict copy def
  13084.     } if
  13085. load begin def end
  13086. } def
  13087. /npop                % integer npop -
  13088. {
  13089.     {
  13090.     pop
  13091.     } repeat
  13092. } def
  13093. % marking operators
  13094. /sw                    % ax ay string sw x y 
  13095. {
  13096. dup length exch stringwidth
  13097. exch 5 -1 roll 3 index 1 sub mul add
  13098. 4 1 roll 3 1 roll 1 sub mul add
  13099. } def
  13100. /swj                % cx cy fillchar ax ay string swj x y
  13101. {
  13102. dup 4 1 roll
  13103. dup length exch stringwidth 
  13104. exch 5 -1 roll 3 index 1 sub mul add
  13105. 4 1 roll 3 1 roll 1 sub mul add 
  13106. 6 2 roll /_cnt 0 ddef
  13107. {1 index eq {/_cnt _cnt 1 add ddef} if} forall pop
  13108. exch _cnt mul exch _cnt mul 2 index add 4 1 roll 2 index add 4 1 roll pop pop
  13109. } def
  13110. /ss                    % ax ay string matrix ss -
  13111. {
  13112. 4 1 roll
  13113.     {                % matrix ax ay char 0 0 {proc} -
  13114.     2 npop 
  13115.     (0) exch 2 copy 0 exch put pop
  13116.     gsave
  13117.     false charpath currentpoint
  13118.     4 index setmatrix
  13119.     stroke
  13120.     grestore
  13121.     moveto
  13122.     2 copy rmoveto
  13123.     } exch cshow
  13124. 3 npop
  13125. } def
  13126. /jss                % cx cy fillchar ax ay string matrix jss -
  13127. {
  13128. 4 1 roll
  13129.     {                % cx cy fillchar matrix ax ay char 0 0 {proc} -   
  13130.     2 npop 
  13131.     (0) exch 2 copy 0 exch put 
  13132.     gsave
  13133.     _sp eq 
  13134.         {
  13135.         exch 6 index 6 index 6 index 5 -1 roll widthshow  
  13136.         currentpoint
  13137.         }
  13138.         {
  13139.         false charpath currentpoint
  13140.         4 index setmatrix stroke
  13141.         }ifelse
  13142.     grestore
  13143.     moveto
  13144.     2 copy rmoveto
  13145.     } exch cshow
  13146. 6 npop
  13147. } def
  13148. % path operators
  13149. /sp                    % ax ay string sp -
  13150. {
  13151.     {
  13152.     2 npop (0) exch
  13153.     2 copy 0 exch put pop
  13154.     false charpath
  13155.     2 copy rmoveto
  13156.     } exch cshow
  13157. 2 npop
  13158. } def
  13159. /jsp                    % cx cy fillchar ax ay string jsp -
  13160. {
  13161.     {                    % cx cy fillchar ax ay char 0 0 {proc} -
  13162.     2 npop 
  13163.     (0) exch 2 copy 0 exch put 
  13164.     _sp eq 
  13165.         {
  13166.         exch 5 index 5 index 5 index 5 -1 roll w°¿ idthshow  
  13167.         }
  13168.         {
  13169.         false charpath
  13170.         }ifelse
  13171.     2 copy rmoveto
  13172.     } exch cshow
  13173. 5 npop
  13174. } def
  13175. % path construction operators
  13176. /pl                % x y pl x y
  13177. {
  13178. transform
  13179. 0.25 sub round 0.25 add exch
  13180. 0.25 sub round 0.25 add exch
  13181. itransform
  13182. } def
  13183. /setstrokeadjust where
  13184.     {
  13185.     pop true setstrokeadjust
  13186.     /c                % x1 y1 x2 y2 x3 y3 c -
  13187.     {
  13188.     curveto
  13189.     } def
  13190.     /C
  13191.     /c load def
  13192.     /v                % x2 y2 x3 y3 v -
  13193.     {
  13194.     currentpoint 6 2 roll curveto
  13195.     } def
  13196.     /V
  13197.     /v load def
  13198.     /y                % x1 y1 x2 y2 y -
  13199.     {
  13200.     2 copy curveto
  13201.     } def
  13202.     /Y
  13203.     /y load def
  13204.     /l                % x y l -
  13205.     {
  13206.     lineto
  13207.     } def
  13208.     /L
  13209.     /l load def
  13210.     /m                % x y m -
  13211.     {
  13212.     moveto
  13213.     } def
  13214.     }
  13215.     {%else
  13216.     /c
  13217.     {
  13218.     pl curveto
  13219.     } def
  13220.     /C
  13221.     /c load def
  13222.     /v
  13223.     {
  13224.     currentpoint 6 2 roll pl curveto
  13225.     } def
  13226.     /V
  13227.     /v load def
  13228.     /y
  13229.     {
  13230.     pl 2 copy curveto
  13231.     } def
  13232.     /Y
  13233.     /y load def
  13234.     /l
  13235.     {
  13236.     pl lineto
  13237.     } def
  13238.     /L
  13239.     /l load def
  13240.     /m
  13241.     {
  13242.     pl moveto
  13243.     } def
  13244.     }ifelse
  13245. % graphic state operators
  13246. /d                    % array phase d -
  13247. {
  13248. setdash
  13249. } def
  13250. /cf    {} def            % - cf flatness
  13251. /i                    % flatness i -
  13252. {
  13253. dup 0 eq
  13254.     {
  13255.     pop cf
  13256.     } if
  13257. setflat
  13258. } def
  13259. /j                    % linejoin j -
  13260. {
  13261. setlinejoin
  13262. } def
  13263. /J                    % linecap J -
  13264. {
  13265. setlinecap
  13266. } def
  13267. /M                    % miterlimit M -
  13268. {
  13269. setmiterlimit
  13270. } def
  13271. /w                    % linewidth w -
  13272. {
  13273. setlinewidth
  13274. } def
  13275. % path painting operators
  13276. /H                    % - H -
  13277. {} def
  13278. /h                    % - h -
  13279. {
  13280. closepath
  13281. } def
  13282. /N                    % - N -
  13283. {
  13284. _pola 0 eq 
  13285.     {
  13286.     _doClip 1 eq {clip /_doClip 0 ddef} if 
  13287.     newpath
  13288.     } 
  13289.     {
  13290.     /CRender {N} ddef
  13291.     }ifelse
  13292. } def
  13293. /n                    % - n -
  13294. {N} def
  13295. /F                    % - F -
  13296. {
  13297. _pola 0 eq 
  13298.     {
  13299.     _doClip 1 eq 
  13300.         {
  13301.         gsave _pf grestore clip newpath /_lp /none ddef _fc 
  13302.         /_doClip 0 ddef
  13303.         }
  13304.         {
  13305.         _pf
  13306.         }ifelse
  13307.     } 
  13308.     {
  13309.     /CRender {F} ddef
  13310.     }ifelse
  13311. } def
  13312. /f                    % - f -
  13313. {
  13314. closepath
  13315. F
  13316. } def
  13317. /S                    % - S -
  13318. {
  13319. _pola 0 eq 
  13320.     {
  13321.     _doClip 1 eq 
  13322.         {
  13323.         gsave _ps grestore clip newpath /_lp /none ddef _sc 
  13324.         /_doClip 0 ddef
  13325.         }
  13326.         {
  13327.         _ps
  13328.         }ifelse
  13329.     } 
  13330.     {
  13331.     /CRender {S} ddef
  13332.     }ifelse
  13333. } def
  13334. /s                    % - s -
  13335. {
  13336. closepath
  13337. S
  13338. } def
  13339. /B                    % - B -
  13340. {
  13341. _pola 0 eq 
  13342.     {
  13343.     _doClip 1 eq     % F clears _doClip
  13344.     gsave F grestore 
  13345.         {
  13346.         gsave S grestore clip newpath /_lp /none ddef _sc
  13347.         /_doClip 0 ddef
  13348.         } 
  13349.         {
  13350.         S
  13351.         }ifelse
  13352.     }
  13353.     {
  13354.     /CRender {B} ddef
  13355.     }ifelse
  13356. } def
  13357. /b                    % - b -
  13358. {
  13359. closepath
  13360. B
  13361. } def
  13362. /W                    % - W -
  13363. {
  13364. /_doClip 1 ddef
  13365. } def
  13366. /*                    % - [string] * -
  13367. {
  13368. count 0 ne 
  13369.     {
  13370.     dup type (stringtype) eq {pop} if
  13371.     } if 
  13372. _pola 0 eq {newpath} if
  13373. } def
  13374. % group operators
  13375. /u                    % - u -
  13376. {} def
  13377. /U                    % - U -
  13378. {} def
  13379. /q                    % - q -
  13380. {
  13381. _pola 0 eq {gsave} if
  13382. } def
  13383. /Q                    % - Q -
  13384. {
  13385. _pola 0 eq {grestore} if
  13386. } def
  13387. /*u                    % - *u -
  13388. {
  13389. _pola 1 add /_pola exch ddef
  13390. } def
  13391. /*U                    % - *U -
  13392. {
  13393. _pola 1 sub /_pola exch ddef 
  13394. _pola 0 eq {CRender} if
  13395. } def
  13396. /D                    % polarized D -
  13397. {pop} def
  13398. /*w                    % - *w -
  13399. {} def
  13400. /*W                    % - *W -
  13401. {} def
  13402. % place operators
  13403. /`                    % matrix llx lly urx ury string ` -
  13404. {
  13405. /_i save ddef
  13406. 6 1 roll 4 npop
  13407. concat pop
  13408. userdict begin
  13409. /showpage {} def
  13410. 0 setgray
  13411. 0 setlinecap
  13412. 1 setlinewidth
  13413. 0 setlinejoin
  13414. 10 setmiterlimit
  13415. [] 0 setdash
  13416. newpath
  13417. 0 setgray
  13418. false setoverprint
  13419. } def
  13420. /~                    % - ~ -
  13421. {
  13422. end
  13423. _i restore
  13424. } def
  13425. % color operators
  13426. /O                    % flag O -
  13427. {
  13428. 0 ne
  13429. /_of exch ddef
  13430. /_lp /none ddef
  13431. } def
  13432. /R                    % flag R -
  13433. {
  13434. 0 ne
  13435. /_os exch ddef
  13436. /_lp /none ddef
  13437. } def
  13438. /g                    % gray g -
  13439. {
  13440. /_gf exch ddef
  13441. /_fc
  13442. _lp /fill ne
  13443.     {
  13444.     _of setoverprint
  13445.     _gf setgray
  13446.     /_lp /fill ddef
  13447.     } if
  13448. } ddef
  13449. /_pf
  13450. {
  13451. _fc
  13452. fill
  13453. } ddef
  13454. /_psf
  13455. {
  13456. _fc
  13457. ashow
  13458. } ddef
  13459. /_pjsf
  13460. {
  13461. _fc
  13462. awidthshow
  13463. } ddef
  13464. /_lp /none ddef
  13465. } def
  13466. /G                    % gray G -
  13467. {
  13468. /_gs exch ddef
  13469. /_sc
  13470. {
  13471. _lp /stroke ne
  13472.     {
  13473.     _os setoverprint
  13474.     _gs setgray
  13475.     /_lp /stroke ddef
  13476.     } if
  13477. } ddef
  13478. /_ps
  13479. {
  13480. _sc
  13481. stroke
  13482. } ddef
  13483. /_pss
  13484. {
  13485. _sc
  13486. ss
  13487. } ddef
  13488. /_pjss
  13489. {
  13490. _sc
  13491. jss
  13492. } ddef
  13493. /_lp /none ddef
  13494. } def
  13495. /k                    % cyan magenta yellow black k -
  13496. {
  13497. _cf astore pop
  13498. /_fc
  13499. {
  13500. _lp /fill ne
  13501.     {
  13502.     _of setoverprint
  13503.     _cf aload pop setcmykcolor
  13504.     /_lp /fill ddef
  13505.     } if
  13506. } ddef
  13507. /_pf
  13508. {
  13509. _fc
  13510. fill
  13511. } ddef
  13512. /_psf
  13513. {
  13514. _fc
  13515. ashow
  13516. } ddef
  13517. /_pjsf
  13518. {
  13519. _fc
  13520. awidthshow
  13521. } ddef
  13522. /_lp /none ddef
  13523. } def
  13524. /K                    % cyan magenta yellow black K -
  13525. {
  13526. _cs astore pop
  13527. /_sc
  13528. {
  13529. _lp /stroke ne
  13530.     {
  13531.     _os setoverprint
  13532.     _cs aload pop setcmykcolor
  13533.     /_lp /stroke ddef
  13534.     } if
  13535. } ddef
  13536. /_ps
  13537. {
  13538. _sc
  13539. stroke
  13540. } ddef
  13541. /_pss
  13542. {
  13543. _sc
  13544. ss
  13545. } ddef
  13546. /_pjss
  13547. {
  13548. _sc
  13549. jss
  13550. } ddef
  13551. /_lp /none ddef
  13552. } def
  13553. /x                    % cyan magenta yellow black name gray x -
  13554. {
  13555. /_gf exch ddef
  13556. findcmykcustomcolor
  13557. /_if exch ddef
  13558. /_fc
  13559. _lp /fill ne
  13560.     {
  13561.     _of setoverprint
  13562.     _if _gf 1 exch sub setcustomcolor
  13563.     /_lp /fill ddef
  13564.     } if
  13565. } ddef
  13566. /_pf
  13567. {
  13568. _fc
  13569. fill
  13570. } ddef
  13571. /_psf
  13572. {
  13573. _fc
  13574. ashow
  13575. } ddef
  13576. /_pjsf
  13577. {
  13578. _fc
  13579. awidthshow
  13580. } ddef
  13581. /_lp /none ddef
  13582. } def
  13583. /X                    % cyan magenta yellow black name gray X -
  13584. {
  13585. /_gs exch ddef
  13586. findcmykcustomcolor
  13587. /_is exch ddef
  13588. /_sc
  13589. {
  13590. _lp /stroke ne
  13591.     {
  13592.     _os setoverprint
  13593.     _is _gs 1 exch sub setcustomcolor
  13594.     /_lp /stroke ddef
  13595.     } if
  13596. } ddef
  13597. /_ps
  13598. {
  13599. _sc
  13600. stroke
  13601. } ddef
  13602. /_pss
  13603. {
  13604. _sc
  13605. ss
  13606. } ddef
  13607. /_pjss
  13608. {
  13609. _sc
  13610. jss
  13611. } ddef
  13612. /_lp /none ddef
  13613. } def
  13614. % locked object operator
  13615. /A                    % value A -
  13616. {
  13617. pop
  13618. } def
  13619. currentdict readonly pop end
  13620. setpacking
  13621. % annotate page operator
  13622. /annotatepage
  13623. {
  13624. } def
  13625. %%EndResource
  13626. %%EndProlog
  13627. %%BeginSetup
  13628. %%IncludeFont: Helvetica
  13629. %%IncludeFont: Helvetica-Bold
  13630. Adobe_cmykcolor /initialize get exec
  13631. Adobe_cshow /initialize get exec
  13632. Adobe_customcolor /initialize get exec
  13633. Adobe_typography_AI3 /initialize get exec
  13634. Adobe_IllustratorA_AI3 /initialize get exec
  13635. [
  13636. 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis
  13637. /Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute
  13638. /egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde
  13639. /oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex
  13640. /udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls
  13641. /registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash
  13642. /.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef
  13643. /.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash
  13644. /questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef
  13645. /guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe
  13646. /endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide
  13647. /.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright
  13648. /fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand
  13649. /Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex
  13650. /Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex
  13651. /Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla
  13652. /hungarumlaut/ogonek/caron
  13653. TE
  13654. %AI3_BeginEncoding: _Helvetica Helvetica
  13655. [/_Helvetica/Helvetica 0 0 1 TZ
  13656. %AI3_EndEncoding TrueType
  13657. %AI3_BeginEncoding: _Helvetica-Bold Helvetica-Bold
  13658. [/_Helvetica-Bold/Helvetica-Bold 0 0 1 TZ
  13659. %AI3_EndEncoding TrueType
  13660. %%EndSetup
  13661. 0 A
  13662. u
  13663. u
  13664. u
  13665. 0 O
  13666. 0 g
  13667. 0 i 0 J 0 j 1 w 4 M []0 d
  13668. %AI3_Note:
  13669. 0 D
  13670. 53.25 58.25 m
  13671. 53.25 116.75 L
  13672. -41.75 116.75 L
  13673. -41.75 58.25 L
  13674. 53.25 58.25 L
  13675. f
  13676. U
  13677. U
  13678. U
  13679. u
  13680. u
  13681. u
  13682. 53.25 -24.25 m
  13683. 53.25 34.25 L
  13684. -41.75 34.25 L
  13685. -41.75 -24.25 L
  13686. 53.25 -24.25 L
  13687. f
  13688. U
  13689. U
  13690. U
  13691. u
  13692. u
  13693. u
  13694. 53.25 -111.75 m
  13695. 53.25 -53.25 L
  13696. -41.75 -53.25 L
  13697. -41.75 -111.75 L
  13698. 53.25 -111.75 L
  13699. f
  13700. U
  13701. U
  13702. U
  13703. u
  13704. u
  13705. u
  13706. 0 0.1 0 0 k
  13707. 1 R
  13708. 0 G
  13709. 0.75 w
  13710. 51 60.5 m
  13711. 51 119 L
  13712. -44 119 L
  13713. -44 60.5 L
  13714. 51 60.5 L
  13715. b
  13716. U
  13717. U
  13718. U
  13719. u
  13720. 0 To
  13721. 1 0 0 1 -44.9814 140.9482 0 Tp
  13722. TP
  13723. 0 Tr
  13724. 0 g
  13725. 1 w
  13726. /_Helvetica 8 Tf
  13727. 0 Ts
  13728. 100 Tz
  13729. 0 Tt
  13730. 0 TA
  13731. 0 0 5 TC
  13732. 100 100 200 TW
  13733. 0 0 0 Ti
  13734. 0 Ta
  13735. 0 Tq
  13736. 9 0 Tl
  13737. 0 Tc
  13738. 0 Tw
  13739. (Component) Tx
  13740. (\r) TX 
  13741. T*
  13742. (registration list) Tx
  13743. (\r) TX 
  13744. T*
  13745. (\r) TX 
  13746. TO
  13747. U
  13748. u
  13749. u
  13750. -147.25 0.75 m
  13751. -147.25 90.75 L
  13752. -209.25 90.75 L
  13753. -209.25 0.75 L
  13754. -147.25 0.75 L
  13755. f
  13756. U
  13757. u
  13758. 0 0.1 0 0 k
  13759. 1 R
  13760. 0 G
  13761. 0.75 w
  13762. -149.5 3 m
  13763. -149.5 93 L
  13764. -211.5 93 L
  13765. -211.5 3 L
  13766. -149.5 3 L
  13767. b
  13768. U
  13769. u
  13770. 1 g
  13771. 1 w
  13772. -166.5779 45.8595 m
  13773. -166.5389 42.8597 -166.5779 27.5218 y
  13774. -166.2591 25.0656 -169.4841 25.0656 v
  13775. -172.7092 25.0656 -176.4405 25.0656 y
  13776. -175.381 24.0062 l
  13777. -173.8904 22.8718 -176.7405 23.0218 v
  13778. -184.8405 23.0218 l
  13779. -186.1156 23.1718 -185.1405 24.0718 v
  13780. -184.2405 25.0468 l
  13781. -190.7656 25.0468 l
  13782. -193.6156 24.8968 -193.6156 27.4468 v
  13783. -193.6156 29.9968 -193.6156 45.822 y
  13784. -194.3656 48.297 -190.8406 48.297 v
  13785. -186.7156 48.297 -185.6656 48.297 y
  13786. -186.1905 47.397 l
  13787. -187.3156 45.822 -184.9905 45.897 v
  13788. -182.3668 45.9816 -175.3904 45.897 y
  13789. -173.5904 45.972 -174.4904 47.172 v
  13790. -175.3904 48.372 -175.3154 48.297 y
  13791. -169.4654 48.297 l
  13792. -166.6154 48.747 -166.5779 45.8595 v
  13793. b
  13794. 0 g
  13795. -186.5374 41.8845 m
  13796. -188.4874 37.9844 l
  13797. -188.4874 33.7844 l
  13798. -186.3874 29.4343 l
  13799. -182.5624 27.1843 l
  13800. -178.8873 26.8843 l
  13801. -175.8873 28.6843 l
  13802. -174.5373 27.3343 l
  13803. -171.0873 27.3343 l
  13804. -170.7873 29.8843 l
  13805. -172.7373 31.9844 l
  13806. -171.6873 34.3844 l
  13807. -171.9123 37.6094 l
  13808. -173.7°¿873 40.5345 l
  13809. -176.3373 42.7845 l
  13810. -179.1873 43.9845 l
  13811. -182.9374 43.9845 l
  13812. -186.5374 41.8845 l
  13813. f
  13814. 1 g
  13815. -181.7374 40.6845 m
  13816. -184.7374 38.7344 l
  13817. -185.2624 35.2844 l
  13818. -183.9874 31.9844 l
  13819. -180.3874 29.9594 l
  13820. -176.6373 31.6844 l
  13821. -174.9123 35.1344 l
  13822. -175.8123 38.8094 l
  13823. -178.4373 40.3844 l
  13824. -181.7374 40.6845 l
  13825. f
  13826. 0 g
  13827. -182.0374 35.5844 m
  13828. -181.8874 33.0344 -179.0373 34.5344 v
  13829. -173.9373 39.9345 l
  13830. -173.4123 43.6845 -175.9623 42.2595 v
  13831. -176.0373 41.2845 -174.9873 40.3844 v
  13832. -176.0373 39.1844 l
  13833. -177.3873 40.2345 l
  13834. -180.3874 37.0844 l
  13835. -178.8873 36.1844 -179.9373 35.2844 v
  13836. -180.0874 34.4594 -182.0374 35.5844 v
  13837. f
  13838. 1 g
  13839. -176.1873 42.4845 m
  13840. -176.7123 40.6095 -177.3873 40.2345 v
  13841. -176.0373 39.1844 l
  13842. -174.9873 40.3844 l
  13843. -176.1873 41.2095 -175.9623 42.2595 v
  13844. -175.7373 43.3095 -176.1873 42.4845 y
  13845. f
  13846. U
  13847. u
  13848. 0 To
  13849. 1 0 0 1 -180.2314 70.9482 0 Tp
  13850. TP
  13851. -20.6719 0 Td
  13852. 0 Tr
  13853. 1 O
  13854. 0 g
  13855. 1 Ta
  13856. (Component) Tx
  13857. (\r) TX 
  13858. 4.8916 -9 Td
  13859. (Manager) Tx 
  13860. (\r) TX 
  13861. TO
  13862. U
  13863. U
  13864. u
  13865. 0 O
  13866. -305.25 0.75 m
  13867. -305.25 90.75 L
  13868. -367.25 90.75 L
  13869. -367.25 0.75 L
  13870. -305.25 0.75 L
  13871. f
  13872. 0 0.1 0 0 k
  13873. 1 R
  13874. 0 G
  13875. 0.75 w
  13876. -307.5 3 m
  13877. -307.5 93 L
  13878. -369.5 93 L
  13879. -369.5 3 L
  13880. -307.5 3 L
  13881. b
  13882. 0 To
  13883. 1 0 0 1 -338.7314 70.9482 0 Tp
  13884. TP
  13885. -19.5605 0 Td
  13886. 0 Tr
  13887. 1 O
  13888. 0 g
  13889. 1 w
  13890. 8 0 Tl
  13891. (Application) Tx 
  13892. (\r) TX 
  13893. TO
  13894. 0 O
  13895. 1 g
  13896. 1 R
  13897. 0 G
  13898. 2 j
  13899. -338.8125 51.7812 m
  13900. -323.3125 36.2812 l
  13901. -338.5 21.0937 l
  13902. -354.5625 37.1562 l
  13903. -338.8125 51.7812 l
  13904. b
  13905. -339.1875 35.0312 m
  13906. -337.625 36.7187 l
  13907. -336.625 37.9687 -335.5 37.8437 v
  13908. -334.375 37.7187 -331.6875 37.7812 y
  13909. -326.5 32.6562 l
  13910. -326.0625 26.5312 l
  13911. -329.125 28.3437 l
  13912. -333.3125 28.4062 l
  13913. -335.4132 28.6753 -336.375 29.1562 v
  13914. -337.625 29.7812 -339.1875 31.2187 y
  13915. -339.7634 32.1745 -340 33.5937 v
  13916. -340.0625 33.9687 -338.9375 34.0312 -338.375 33.4687 c
  13917. -338.0563 33.15 -336.8125 31.4687 y
  13918. -335.25 31.5312 l
  13919. -333.8125 32.7812 l
  13920. -334.3125 33.9062 l
  13921. -335.6875 36.0312 -336.9375 34.6562 v
  13922. -337.8776 33.6221 -339.4375 34.2812 -339.1875 35.0312 c
  13923. b
  13924. 1 O
  13925. 0 g
  13926. 0 j
  13927. -326.5 33.3437 m
  13928. -323.5625 33.0312 l
  13929. -323.5625 25.2812 l
  13930. -325.8125 25.2812 l
  13931. -328.1875 27.7812 l
  13932. -325.625 25.4062 -326.5 33.3437 v
  13933. f
  13934. -330.0625 33.4062 m
  13935. -330.0625 32.3437 l
  13936. -337.3125 32.3437 l
  13937. -338.375 33.4687 l
  13938. -330.0625 33.4062 l
  13939. f
  13940. -340 33.5937 m
  13941. -342.9375 33.5937 l
  13942. -343.375 32.4062 -342.5 32.4062 v
  13943. -341.625 32.4062 -339.75 32.4062 y
  13944. -340 33.5937 l
  13945. f
  13946. 0 O
  13947. 1 g
  13948. 0 R
  13949. 0 G
  13950. 0.5 w
  13951. -338.5 48 m
  13952. B
  13953. U
  13954. 0 To
  13955. 1 0 0 1 -301.5 141.0107 0 Tp
  13956. TP
  13957. 0 Tr
  13958. 0 g
  13959. 1 w
  13960. 0 Ta
  13961. 9 0 Tl
  13962. (Application passes) Tx
  13963. (\r) TX 
  13964. T*
  13965. (description of component) Tx
  13966. (\r) TX 
  13967. T*
  13968. (it wants to access to ) Tx
  13969. (\r) TX 
  13970. T*
  13971. (Component Manager.) Tx 
  13972. (\r) TX 
  13973. TO
  13974. 0 To
  13975. 1 0 0 1 -173.0771 140.9482 0 Tp
  13976. TP
  13977. 0 Tr
  13978. (Component Manager tries) Tx
  13979. (\r) TX 
  13980. T*
  13981. (to match a component in) Tx
  13982. (\r) TX 
  13983. T*
  13984. (its registration list with the ) Tx
  13985. (\r) TX 
  13986. T*
  13987. (requested description.) Tx 
  13988. (\r) TX 
  13989. TO
  13990. u
  13991. u
  13992. 0 R
  13993. 0 G
  13994. 0.75 w
  13995. -301.0389 19.5076 m
  13996. -220.7359 19.5076 l
  13997. S
  13998. U
  13999. 0 O
  14000. 0 g
  14001. 1 w
  14002. -222.3875 22.1031 m
  14003. -216.6124 19.5219 l
  14004. -222.3875 16.8969 l
  14005. -220.6375 19.4781 l
  14006. -222.3875 22.1031 l
  14007. f
  14008. U
  14009. 0 To
  14010. 1 0 0 1 -178.5664 -48.0518 0 Tp
  14011. TP
  14012. 0 Tr
  14013. (Component Manager) Tx
  14014. (\r) TX 
  14015. T*
  14016. (returns ID of component) Tx
  14017. (\r) TX 
  14018. T*
  14019. (to application.) Tx 
  14020. (\r) TX 
  14021. TO
  14022. 0 R
  14023. 0 G
  14024. 61.5 -122 m
  14025. 61.5 161 L
  14026. -54 161 L
  14027. -54 -122 L
  14028. 61.5 -122 L
  14029. s
  14030. u
  14031. 0 O
  14032. 0 0.1 0 0 k
  14033. -296.2148 151.4745 m
  14034. -293.7155 151.4745 -291.6893 153.5007 -291.6893 156 c
  14035. -291.6893 158.4993 -293.7155 160.5255 -296.2148 160.5255 c
  14036. -298.7142 160.5255 -300.7403 158.4993 -300.7403 156 c
  14037. -300.7403 153.5007 -298.7142 151.4745 -296.2148 151.4745 c
  14038. f
  14039. 0 To
  14040. 0.8 0 0 0.8 -296.1 153.6086 0 Tp
  14041. TP
  14042. -2.2236 0 Td
  14043. 0 Tr
  14044. 1 O
  14045. 0 g
  14046. /_Helvetica-Bold 8 Tf
  14047. 1 Ta
  14048. 10 0 Tl
  14049. (1) Tx 
  14050. (\r) TX 
  14051. TO
  14052. U
  14053. u
  14054. 0 O
  14055. 0 0.1 0 0 k
  14056. -168.8398 151.9745 m
  14057. -166.3405 151.9745 -164.3143 154.0007 -164.3143 156.5 c
  14058. -164.3143 158.9993 -166.3405 161.0255 -168.8398 161.0255 c
  14059. -171.3392 161.0255 -173.3653 158.9993 -173.3653 156.5 c
  14060. -173.3653 154.0007 -171.3392 151.9745 -168.8398 151.9745 c
  14061. f
  14062. 0 To
  14063. 0.8 0 0 0.8 -168.825 154.1086 0 Tp
  14064. TP
  14065. -2.2236 0 Td
  14066. 0 Tr
  14067. 1 O
  14068. 0 g
  14069. (2) Tx 
  14070. (\r) TX 
  14071. TO
  14072. U
  14073. u
  14074. u
  14075. 0 O
  14076. 0 0.1 0 0 k
  14077. -174.7148 -36.5255 m
  14078. -172.2155 -36.5255 -170.1893 -34.4993 -170.1893 -32 c
  14079. -170.1893 -29.5007 -172.2155 -27.4745 -174.7148 -27.4745 c
  14080. -177.2142 -27.4745 -179.2403 -29.5007 -179.2403 -32 c
  14081. -179.2403 -34.4993 -177.2142 -36.5255 -174.7148 -36.5255 c
  14082. f
  14083. 0 To
  14084. 0.8 0 0 0.8 -174.6375 -34.3914 0 Tp
  14085. TP
  14086. -2.2236 0 Td
  14087. 0 Tr
  14088. 1 O
  14089. 0 g
  14090. (3) Tx 
  14091. (\r) TX 
  14092. TO
  14093. U
  14094. U
  14095. u
  14096. u
  14097. 0 R
  14098. 0 G
  14099. 0.75 w
  14100. -143.2133 19.5076 m
  14101. -61.9102 19.5076 l
  14102. S
  14103. U
  14104. 0 O
  14105. 0 g
  14106. 1 w
  14107. -63.5619 22.1031 m
  14108. -57.7868 19.5219 l
  14109. -63.5619 16.8969 l
  14110. -61.8119 19.4781 l
  14111. -63.5619 22.1031 l
  14112. f
  14113. U
  14114. u
  14115. u
  14116. 0 R
  14117. 0 G
  14118. 0.75 w
  14119. -58.5367 11.4924 m
  14120. -139.3397 11.4924 l
  14121. S
  14122. U
  14123. 0 O
  14124. 0 g
  14125. 1 w
  14126. -137.6881 8.8969 m
  14127. -143.4632 11.4781 l
  14128. -137.6881 14.1031 l
  14129. -139.4381 11.5219 l
  14130. -137.6881 8.8969 l
  14131. f
  14132. U
  14133. u
  14134. u
  14135. 0 R
  14136. 0 G
  14137. 0.75 w
  14138. -216.2867 11.4924 m
  14139. -296.5897 11.4924 l
  14140. S
  14141. U
  14142. 0 O
  14143. 0 g
  14144. 1 w
  14145. -294.9381 8.8969 m
  14146. -300.7132 11.4781 l
  14147. -294.9381 14.1031 l
  14148. -296.6881 11.5219 l
  14149. -294.9381 8.8969 l
  14150. f
  14151. U
  14152. 0 R
  14153. 0 0.5 0 0 K
  14154. 0.4 w
  14155. -264.5 109.5 m
  14156. -264.5 54 l
  14157. S
  14158. -248 -2.25 m
  14159. -184 -30.25 l
  14160. S
  14161. -111.5 -2.5125 m
  14162. -165.5 -30.2 l
  14163. S
  14164. u
  14165. u
  14166. u
  14167. 0 O
  14168. 0 0.1 0 0 k
  14169. 1 R
  14170. 0 G
  14171. 0.75 w
  14172. 51 -22 m
  14173. 51 36.5 L
  14174. -44 36.5 L
  14175. -44 -22 L
  14176. 51 -22 L
  14177. b
  14178. U
  14179. U
  14180. U
  14181. u
  14182. u
  14183. u
  14184. 51 -109.5 m
  14185. 51 -51 L
  14186. -44 -51 L
  14187. -44 -109.5 L
  14188. 51 -109.5 L
  14189. b
  14190. U
  14191. U
  14192. U
  14193. u
  14194. 0 To
  14195. 1 0 0 1 -34.4814 101.4482 0 Tp
  14196. TP
  14197. 0 Tr
  14198. 1 O
  14199. 0 g
  14200. 1 w
  14201. /_Helvetica 8 Tf
  14202. 0 Ta
  14203. 9 0 Tl
  14204. (ID = ) Tx 
  14205. 0 O
  14206. 14 0 Tl
  14207. (10000) Tx 
  14208. 1 O
  14209. 9 0 Tl
  14210. (\r) TX 
  14211. T*
  14212. (Type = 'math') Tx
  14213. (\r) TX 
  14214. T*
  14215. (Subtype =) Tx 
  14216. 0 O
  14217. ( '       ') Tx 
  14218. 1 O
  14219. (\r) TX 
  14220. T*
  14221. (Manufacturer = 'appl') Tx
  14222. (\r) TX 
  14223. T*
  14224. (\r) TX 
  14225. TO
  14226. U
  14227. 0 To
  14228. 1 0 0 1 -140.9521 42.4482 0 Tp
  14229. TP
  14230. 0 Tr
  14231. 0 O
  14232. (Type = 'math') Tx
  14233. (\r) TX 
  14234. T*
  14235. (Subtype = '       ') Tx
  14236. (\r) TX 
  14237. T*
  14238. (Manufacturer = 'appl' ) Tx
  14239. (\r) TX 
  14240. T*
  14241. (\r) TX 
  14242. 0 -14 Td
  14243. 14 0 Tl
  14244. (           10000) Tx 
  14245. (\r) TX 
  14246. TO
  14247. u
  14248. 0 To
  14249. 1 0 0 1 -34.4814 18.9482 0 Tp
  14250. TP
  14251. 0 Tr
  14252. 1 O
  14253. 9 0 Tl
  14254. (ID = 10001) Tx
  14255. (\r) TX 
  14256. T*
  14257. (Type = 'math') Tx
  14258. (\r) TX 
  14259. T*
  14260. (Subtype =) Tx 
  14261. 0 O
  14262. ( '       ') Tx 
  14263. 1 O
  14264. (\r) TX 
  14265. T*
  14266. (Manufacturer = 'gwck') Tx
  14267. (\r) TX 
  14268. T*
  14269. (\r) TX 
  14270. TO
  14271. U
  14272. u
  14273. 0 To
  14274. 1 0 0 1 -34.4814 -68.5518 0 Tp
  14275. TP
  14276. 0 Tr
  14277. (ID = nnn) Tx 
  14278. 13 0 Tl
  14279. (n) Tx 
  14280. 9 0 Tl
  14281. (n) Tx
  14282. (\r) TX 
  14283. T*
  14284. (Type = 'blah') Tx
  14285. (\r) TX 
  14286. T*
  14287. (Subtype = 'foo ') Tx
  14288. (\r) TX 
  14289. T*
  14290. (Manufacturer = 'appl') Tx 
  14291. (\r) TX 
  14292. TO
  14293. U
  14294. 0 To
  14295. 1 0 0 1 4 -32.25 0 Tp
  14296. TP
  14297. -1.3994 0 Td
  14298. 0 Tr
  14299. 1 Ta
  14300. 7 0 Tl
  14301. (\245) Tx 
  14302. 8 0 Tl
  14303. (\r) TX 
  14304. T*
  14305. (\245) Tx
  14306. (\r) TX 
  14307. T*
  14308. (\245) Tx 
  14309. (\r) TX 
  14310. TO
  14311. 0 To
  14312. 1 0 0 1 -299.4521 42.4482 0 Tp
  14313. TP
  14314. 0 Tr
  14315. 0 O
  14316. 0 Ta
  14317. 9 0 Tl
  14318. (Type = 'math') Tx
  14319. (\r) TX 
  14320. T*
  14321. (Subtype = '       ') Tx
  14322. (\r) TX 
  14323. T*
  14324. (Manufacturer = 'appl') Tx
  14325. (\r) TX 
  14326. T*
  14327. (\r) TX 
  14328. 0 -14 Td
  14329. 14 0 Tl
  14330. (           10000) Tx 
  14331. (\r) TX 
  14332. TO
  14333. 1 R
  14334. 0 0.5 0 0 K
  14335. 0.4 w
  14336. -92.125 116.25 m
  14337. -46.625 106.75 l
  14338. S
  14339. %%PageTrailer
  14340. gsave annotatepage grestore showpage
  14341. %%Trailer
  14342. Adobe_IllustratorA_AI3 /terminate get exec
  14343. Adobe_typography_AI3 /terminate get exec
  14344. Adobe_customcolor /terminate get exec
  14345. Adobe_cshow /terminate get exec
  14346. Adobe_cmykcolor /terminate get exec
  14347. Adobe_packedarray /terminate get exec
  14348. %%EOF
  14349. ◊#ˇ ˇˇˇˇ#◊ 
  14350. d,     Helvetica
  14351.     .°dONLNd)ñ4n+¥P"MAKING CALLS TO THE MATH COMPONENT, Palatino
  14352. °dONLNd#4ñ@˛* LThe Math component performs only two functions, dividing and multiplying two°dONLNdp@ñL* Uintegers. To ask it to divide two numbers for us, we just call the component function°dONLNdΔLñX‚* EDoDivide with the component instance value we got by opening the Math°dONLNd Xñd»*
  14353. component.,
  14354. Courier
  14355.     °dONLNdqñ|Í*Dresult = DoDivide (mathInstance, numerator, denominator, "ient);
  14356. °dONLNd]àñî◊*DWhen we’re done with the component, we close the connection with the°dONLNd¢îñ†%* CloseComponent call, like this:
  14357.     °dONLNd√≠ñ∏Y*'result = CloseComponent (mathInstance);
  14358. °dONLNd΃ñ–*SThat’s all there is to it. You can see that making component function calls is much°dONLNd?–ñ‹4* #like making any other kind of call.
  14359. °dONLNdcÌñ˚é*EXTENDING EXISTING COMPONENTS
  14360. °dONLNdŎñ ˇ*PAfter defining the basic functionality for your component, you may find that you°dONLNd“ ñ˜* Mwant to extend it beyond what you originally specified in your component API.°dONLNd ñ#€* HThere are three ways to extend the functionality of existing components:°dONLNdi)©5Ø+•°dONLNdk)µ5«) ;Use the subtype and/or manufacturer fields of the component°dONLNdß5µAΔ* ?description to indicate to a client application that a specific°dONLNdÁAµMª* 6component implementation provides previously undefined°dONLNdMµYÙ* functionality.°dONLNd-_©kØ(á«•°dONLNd/_µk‘) ?Revise the component API to add calls that weren’t specified in°dONLNdokµw* the original interface.°dONLNdá}©â±(•«• °dONLNdä}∂â÷)
  14361. <Modify the behavior of a particular component implementation°dONLNd«âµïí(±”3by capturing it and overriding a specific function.°dONLNd˚°ñ≠î(…¥7The following sections examine these methods in detail.
  14362.     °dONLNd3æñ…¿*0ADDING NEW FUNCTIONALITY TO A SPECIFIC COMPONENT°dONLNdd ñ’Ú* IMPLEMENTATION
  14363. °dONLNdt’ñ·
  14364. * MLet’s add some more functionality to the Math component. The MoMath component°dONLNd¬·ñÌÍ* Iextends the Math component by adding an addition function. A new function°dONLNd Ìñ˘ * Nprototype is added for the new function in MoMathComponent.h, along with a new°dONLNd[˘ñ* request code, kDoAddSelect.
  14365.     °dONLNdwñ*Ipascal ComponentResult DoAdd (MathComponent mathInstance, short firstNum,°dONLNd¬§)È+ Ashort secondNum, short* result) = ComponentCallNow (kDoAddSelect,°dONLNd*§5¬* 0x08); xBx/
  14366. ({& 
  14367. +
  14368. 22
  14369. +md)e)v)e)l)o)p)  
  14370. )
  14371. December 1992ˇ4◊#ˇ ˇˇˇˇ#◊ 
  14372. d, Palatino
  14373. .°dONLNd$0s+6LMRequest codes for implementation-specific functions must have an ID of 256 or°dONLNdN0<m* Ngreater. This is required to differentiate these functions from those that are°dONLNdù<Hx* Lgenerally defined in the API for the component type. Implementation-specific°dONLNdÍHTí* Sfunctions usually provide capabilities beyond those specified in the component API,°dONLNd>T`å* Pand thus offer developers a way to differentiate their component implementations°dONLNdè`lê* Ofrom those of competing developers. The following code fragment from the MoMath°dONLNdfllx** :component dispatcher shows support for the DoAdd function:,
  14374. Courier
  14375.     °dONLNdÖêr*case kDoAddSelect:°dONLNd0ÖöêÂ)Ç// Add function°dONLNd@ëú(∏6{°dONLNdCù&®È+ 'result = CallComponentFunction (params,°dONLNdq©`¥
  14376. +: "(ComponentFunction) _MoMathDoAdd);°dONLNdïµ&¿D(‹Dbreak;°dONLNdú¡Ã(Ë6}
  14377. °dONLNdûÿ‰Ñ*NHow does the calling application know that a superset of the Math component is°dONLNd̉q* Naround? To start with, the caller needs to know that such a beast even exists.°dONLNd<¸w* LRemember, this is an extension of a component implementation by a particular°dONLNdâ¸ë* Uvendor, not of the component type in general. In this case, the extended component is°dONLNdflä* Pdifferentiated from its basic implementation by its manufacturer code. Both Math°dONLNd0 é* Nand MoMath have the same component type ('math'), but their manufacturer codes°dONLNd ,è* Rdiffer ('appl' for Math and 'gwck' for MoMath). Note that the subtype field can be°dONLNd“,8h* Lused in a similar manner, but it’s typically used to distinguish algorithmic°dONLNd8Dç* Pvariations of a general component type. For example, image compressor components°dONLNdpDPf* L('imco') use the subtype field to differentiate various types of compression°dONLNdΩP\Z* Lalgorithms ('rle ' for run length encoding, 'jpeg' for JPEG, and so on). The°dONLNd
  14378. \hj* Kmanufacturer field is used to identify vendor-specific implementations of a°dONLNdVht≥* !particular compression algorithm.°dONLNdxÄåw*OIf the application is aware that this extended component exists, it can use the°dONLNd»åòé* Uinformation stored in the component’s 'thng' resource to locate and open it. Once the°dONLNdò§Å* Qcomponent has been opened, the application calls the extended function just as it°dONLNdp§∞º* #would any other component function.,     Helvetica
  14379.     °dONLNdï¡Ã,*,ADDING NEW FUNCTIONALITY TO A COMPONENT TYPE
  14380. °dONLNd¬Ãÿ[* FIn the preceding example, we used the manufacturer code to hook in new°dONLNd    ÿ‰Å* Nfunctionality to the Math component; this allowed a specific implementation to°dONLNdX‰ä* Sextend the interface. In reality, we would be better off extending the component by°dONLNd¨¸á* Pdefining a change to the Math component API, so that all components of this type°dONLNd˝¸ç* Twould have an interface defined for the new addition function. Of course, this is an°dONLNd    Rè* Ooption only when you’re the owner of the component API. Changing component APIs°dONLNd    ¢ \* Hthat are owned by others (for instance, by Apple) is a good way to break°dONLNd    Î ,<* Capplications, and no one appreciates that, least of all your users.°dONLNd
  14381. /8Dã*WIf you’re going to take this route, be sure that the existing API is left unchanged, so°dONLNd
  14382. áDPx* Mthat clients using the old component’s API can use your new component without w4w&,Times
  14383. ({) 
  14384. +
  14385. 23
  14386. (Ú*1TECHNIQUES FOR WRITING AND DEBUGGING COMPONENTS  
  14387. )”
  14388. December 1992ˇJ◊#ˇ ˇˇˇˇ#◊ 
  14389. d, Palatino
  14390. .°dONLNdñ$+¥@Shaving to be modified. In addition, it’s important to update the interface revision°dONLNdT$ñ0¯* Mlevel of components that implement the new API, so that clients can determine°dONLNd¢0ñ<ÿ* Cwhether a particular component implementation supports the new API.,     Helvetica
  14391.     °dONLNdÊMñX[* MODIFYING EXISTING FUNCTIONALITY
  14392. °dONLNdXñd„* IModifying existing functionality is a little more complicated than adding°dONLNdQdñpÏ* Ifunctionality to a component type. In the example component, the DoDivide°dONLNdõpñ|
  14393. * Tfunction divides two 16-bit integers, truncating the result. We would actually get a°dONLNd|ñà* Ubetter answer if the result were rounded to the nearest integer. We don’t need to add°dONLNdFàñîΔ* Ea new call to do this, since what we really want to do is replace the°dONLNdåîñ†˘* Nimplementation of the existing call with a more accurate version. On the other°dONLNd€†ñ¨* Rhand, the Math component does an acceptable job of multiplying two integers, so we°dONLNd.¨ñ∏
  14394. * Udon’t need to override that function. Instead, we’ll use the multiply function that’s°dONLNdÑ∏ñƒ¸* already implemented.°dONLNdö–ñ‹≥*>We can do this by writing a component that does the following:°dONLNdŸ‚©ÓØ+•°dONLNd€‚µÓa) $captures the original Math component°dONLNdÙ©±(«• °dONLNdÙ∂—)
  14395. =overrides the original DoDivide function with a more accurate°dONLNdBµ ((”division function°dONLNdT©±(:«• °dONLNdW∂≥)
  14396. 6delegates the DoMultiply function to the original Math°dONLNdéµ*‰(F”    component°dONLNdô6ñB›(^¥ILet’s start by writing a new component — in the example code, it’s called°dONLNd„BñN* LNuMathComponent — that contains a dispatcher, as well as functions to handle°dONLNd0NñZ¯* Jthe Component Manager request codes and the new DoDivide routine. We use a°dONLNd{Zñf
  14397. * Rregister routine to check for the availability of a Math component before we allow°dONLNdŒfñrÎ* Ithe NuMath component to be registered. If no Math component is available,°dONLNdrñ~«* Eobviously we can’t capture it, and we shouldn’t register. We also set°dONLNd^~ñä“* CcmpWantsRegisterMessage (bit 31) in the componentFlags field of the°dONLNd¢äññ    * PComponentDescription record in the NuMath component’s 'thng' resource to let the°dONLNdÛññ¢* LComponent Manager know that we want a chance to check our environment before°dONLNd@¢ñÆ * Swe’re registered. With this flag set, the sequence of requests that NuMath will get°dONLNdîÆñ∫Å* 7at registration time will be open, register, and close.°dONLNdÕΔñ“á*4The NuMath component register routine is as follows:,
  14398. Courier
  14399.     °dONLNdflñÍw*-pascal ComponentResult _NuMathRegister (void)°dONLNd0Îñˆõ* {°dONLNd3˜§‰+ @// See if a Math component is registered. If not, don't register°dONLNdu§Ó* B// this component, since it can't work without the Math component.°dONLNdπ§ä* .// We return 0 to register, 1 to not register.°dONLNdÍ'§2*ComponentDescription°dONLNdˇ'2E)t    mathDesc; xBx/,Times
  14400. ({& 
  14401. +
  14402. 24
  14403. +md)e)v)e)l)o)p)  
  14404. )
  14405. December 1992ˇ|◊#ˇ ˇˇˇˇ#◊ 
  14406. d,
  14407. Courier
  14408.     .°dONLNd&$˝+D@+mathDesc.componentType = mathComponentType;°dONLNd-%&0¡* mathDesc.componentSubType = 0L;°dONLNdP%Ò0-)À // Wild card°dONLNd^1&<Ó(XD(mathDesc.componentManufacturer = 'appl';°dONLNdà=&H∑* mathDesc.componentFlags = 0L;°dONLNd©=ÒH-)À // Wild card°dONLNd∑I&TÀ(pD!mathDesc.componentFlagsMask = 0L;°dONLNd€IÒT-)À // Wild card°dONLNdÎa&l\(àD>return ((FindNextComponent (nil, &mathDesc) != 0L) ? 0L : 1L);°dONLNd*mx(î6}, Palatino
  14409. °dONLNd,Ñêà*POur open routine opens an instance of the Math component normally, and then uses°dONLNd}êúà* Kthe ComponentFunctionImplemented routine to determine whether the component°dONLNd…ú®{* Mwe want to capture supports the target request code. We then capture the Math°dONLNd®¥‚* )component with the CaptureComponent call.
  14410.     °dONLNdB¡Ãv*Fif (ComponentFunctionImplemented ((ComponentInstance) mathComponentID,°dONLNdãÕ5ÿ∑+ kComponentTargetSelect)) {°dONLNd®Ÿ&‰â(DGmathComponentID = CaptureComponent (mathComponentID, (Component) self);°dONLNdÂ( 6}
  14411. °dONLNdÚ¸Ö*LThe original Math component ID is now effectively removed from the Component°dONLNd?Ä* MManager’s registration list. This means that the Math component is now hidden°dONLNdç ä* Tfrom all other clients, except those that already had a connection open to it before°dONLNd‚ ,a* it was captured.°dONLNdÛ8Dç*NWe then open an instance of the Math component, and use the ComponentSetTarget°dONLNdBDPÉ* Nutility (defined in MathComponent.h) to inform Math that it’s been captured by°dONLNdëP\C* NuMath.
  14412.     °dONLNdöit
  14413. *1result = ComponentSetTarget (mathInstance, self);
  14414. °dONLNdÃÄåd*HWhy does a component need to know that it’s been captured? If a captured°dONLNdåòz* Pcomponent makes use of its own functions, it needs to call through the capturing°dONLNdfò§q* Kcomponent instead of through itself, because the capturing component may be°dONLNd≤§∞l* Loverriding one of the calls that the captured component is using. A captured°dONLNdˇ∞º]* Gcomponent does this by keeping track of the component instance that the°dONLNdGº»Å* PComponentSetTarget call passed to it and by using that instance to make calls to°dONLNdò»‘â* the capturing component.°dONLNd±‡ÏÜ*LWhen the NuMath Component receives a divide request code, we dispatch to the°dONLNd˛Ï¯}* Lnew DoDivide function, effectively overriding the DoDivide function that was°dONLNdK¯í* Nimplemented in the Math component. However, when we receive a multiply request°dONLNdöä* Qcode, we delegate this to the captured Math component, since we aren’t overriding°dONLNdÏë* Pthe multiply function. We do this by simply making a DoMultiply call to the Math°dONLNd=(Ö* Kcomponent, passing in the parameters that the NuMath component was provided°dONLNdâ(4 * w°dONLNdä(4#)i°dONLNdã("4&)t°dONLNdå(%4,)h°dONLNdç(+4.). x4x&,Times
  14415. ({) ,     Helvetica
  14416. +
  14417. 25
  14418. (è6In our sample code, )JComponentSetTarget is defined(ô6,in MathComponent.h because the QuickTime 1.0*
  14419. 2Component.h interface file doesn’t declare it. The*
  14420. 3ComponentSetTarget declaration is included in newer*
  14421. 7QuickTime interface files, so if you’re using them, you*
  14422. +should comment it out in MathComponent.h. •
  14423. +Ù11TECHNIQUES FOR WRITING AND DEBUGGING COMPONENTS  
  14424. )”
  14425. December 1992ˇ:◊#ˇ ˇˇˇˇ#◊ 
  14426. d,
  14427. Courier
  14428.     .°dONLNd%ñ0©+¥L7result = DoMultiply (mathInstance, firstNum, secondNum,°dONLNd81ñ<õ*  °dONLNdA1
  14429. <x)tmultiplicationResult);, Palatino
  14430. °dONLNdXHñT
  14431. (p¥RIn the close routine of the NuMath component, we remember to close the instance of°dONLNd´Tñ`* Qthe Math component we were using, and also to uncapture it so that we restore the°dONLNd˝`ñl* system to its original state.
  14432.     °dONLNdyñÑY*'result = CloseComponent (mathInstance);°dONLNdDÖñê|* .result = UncaptureComponent (mathComponentID);,     Helvetica°dONLNds°ñ¨5*THAT WASN’T SO BAD, WAS IT?
  14433. °dONLNdè¨ñ∏* PAs you can see, adding new functionality is no big deal. As always, however, you°dONLNd‡∏ñƒÈ* Hshould notify developers who may use your component of any late-breaking°dONLNd)ƒñ–
  14434. * Tinterface changes. You want to be sure that everyone’s writing code that conforms to°dONLNd~–ñ‹O* )your most recent component specification.
  14435. °dONLNd©Ìñ˚X*ELEVEN COMMON MISTAKES
  14436. °dONLNd¿ˇñ *NYou may encounter some pitfalls during the development of your component. Here°dONLNd ñˆ* Kwe discuss 11 common mistakes that we’ve either made personally or observed°dONLNd[ñ#
  14437. * Pother developers make. We hope that you’ll learn from our own fumblings and save°dONLNd¨#ñ/* yourself time and frustration.
  14438.     °dONLNdÀ<ñGR*'Allocating space at registration time. 
  14439. °dONLNdÚ;RG˘)º&Generally, it’s best if your component°dONLNdGñS˚(o¥Qallocates its storage only when it’s about to be asked to do something — that is,°dONLNdkSñ_¸* Jwhen it has received a kOpenComponentSelect request code. This way, memory°dONLNd∂_ñk°* :isn’t tied up unnecessarily. Remember, your component may °dONLNd_°k∫(áønever°dONLNdı_∫k ) be called during a°dONLNd    kñw˝(ì¥Rgiven session, and if it’s not, it shouldn’t hang out sucking up memory some other°dONLNd\wñÉ* process might be able to use.
  14440.     °dONLNdzêñõQ*%Allocating space in the system heap. 
  14441. °dONLNdüèQõ)ª'The system heap shouldn’t be your first°dONLNd«õñßÚ(√¥Mchoice as a place to put your component globals. The system heap is generally°dONLNdßñ≥ * Treserved for system-wide resources (big surprise), and most components fall into the°dONLNdj≥ñø˚* Qcategory of application resources that needn’t be resident at all times. Consider°dONLNdºøñÀ * Scarefully whether you need to scarf up system space. In addition, if your component°dONLNdÀñ◊* Sis registered in an application heap, you should never try to allocate space in the°dONLNdd◊ñ„Ù* Lsystem heap. The fact that you’re registered in an application heap probably°dONLNd±„ñÔÎ* Mindicates that there isn’t any more space in the system heap for you to grab.
  14442.     °dONLNdˇ¸ñ√*9Not supporting the kComponentVersionSelect request code. 
  14443. °dONLNd8˚√    (#·This is a pretty°dONLNdIñ(/¥7nasty omission for several reasons. First, this is the °dONLNdÄü)Èeasiest°dONLNdáü‚)  request code to°dONLNdòñ(;¥Qimplement; it takes only a single line of code! What are you, lazy? (Don’t answer°dONLNdÍñ+Ú* Nthat.) Second, clients may use the API version level to keep track of extended°dONLNd    9+ñ7·* Jfunctionality — it may be that version 2 of a component interface contains°dONLNd    Ñ7ñC* Radditional calls over version 1, and a client certainly has reason to want to know°dONLNd    ◊CñO&*  that. Third, clients may use the xBx/,Times
  14444. ({& 
  14445. +
  14446. 26
  14447. +md)e)v)e)l)o)p)  
  14448. )
  14449. December 1992ˇ»◊#ˇ ˇˇˇˇ#◊ 
  14450. d, Palatino
  14451. .°dONLNd*Ç+6FNcomponent version to determine, for example, whether the component in question°dONLNdO*6Ö* contains a recent bug fix.,     Helvetica
  14452.     °dONLNdjALx*FIncorrectly calculating the parameter size for your component function°dONLNd±MXO* prototype. 
  14453. °dONLNdºLOXë)7KIf you do this, you’ll probably notice it right after calling the offending°dONLNdXdá(Ä6Pcomponent function, since your stack will be messed up by however many bytes you°dONLNdYdp^* Jfailed to calculate correctly. A common instance of this error occurs when°dONLNd§p|b* Jcalculating the space required by a function call that has char or Boolean°dONLNdÔ|àë* Qparameters. Under certain circumstances, Boolean and char types are padded to two°dONLNdAàî◊* )bytes when passed as function parameters.°dONLNdlû™|*NTo illustrate, we’ll look at two example declarations. How many bytes of stack°dONLNdª™∂U* Gspace need to be reserved for the parameters of the following function?,
  14454. Courier
  14455.     °dONLNd√ŒD*<pascal ComponentResult I2CSendMessage (ComponentInstance ti,°dONLNdBœ&⁄k+ Aunsigned char slaveAddr, unsigned char *dataBuf, short byteCount)
  14456. °dONLNdÑÊÚ|(6MThe correct answer is eight bytes. The slaveAddr parameter is promoted to two°dONLNd“Ú˛ê* Sbytes, the dataBuf pointer takes four bytes, and the byteCount takes two bytes. The°dONLNd&˛
  14457.     * 6rest of the declaration then takes the following form:
  14458.     °dONLNd_& +1= ComponentCallNow (kI2CSendMessageSelect, 0x08);
  14459. °dONLNdë,8Å(T6PLet’s look at the next example. How many bytes of stack space does this function°dONLNd‚8D=* require?
  14460.     °dONLNdÎOZ0*8pascal ComponentResult MyFunction (ComponentInstance ti,°dONLNd$[f*  °dONLNd&[&f ).Boolean aBoolean, char aChar, short *aPointer)
  14461. °dONLNdUp|å(ò6QThe correct answer is six bytes. The aBoolean parameter takes one byte, the aChar°dONLNdß|à~* Mparameter takes one byte, and the aPointer parameter takes four bytes. What’s°dONLNdıàîu* Kthat? Didn’t we just say that Boolean and char parameters got padded to two°dONLNdAî†Å* Nbytes? We certainly did, but these types get padded only when an odd number of°dONLNdꆨ|* Nchar or Boolean parameters occurs consecutively in the declaration. Because we°dONLNdfl¨∏y* Pcould add one byte for the Boolean to the one byte for the char following it, we°dONLNd0∏ƒí* Sdidn’t need to do any padding — the total number of bytes was even (two bytes), and°dONLNdу–è* Rthat’s what’s important. In the first example, this didn’t work. We added one byte°dONLNd◊–‹ã* Wfor the char to the four bytes for the pointer following it, and got five bytes, and so°dONLNd/‹ËÇ* Pwe needed to pad the char parameter by one byte. The rest of the declaration for°dONLNdÄËÙz* the second example is
  14462.     °dONLNdòˇ&
  14463. +-= ComponentCallNow (kMyFunctionSelect, 0x06);°dONLNdΔ"{(>6GRegistering your component when its required hardware isn’t available. 
  14464. °dONLNd    
  14465. {"É(>ôIf°dONLNd    ".z(J6Myour component doesn’t depend on specific hardware functionality, don’t worry°dONLNd    ^.:1* about x4x&,Times
  14466. ({) 
  14467. +
  14468. 27
  14469. (Ú*1TECHNIQUES FOR WRITING AND DEBUGGING COMPONENTS  
  14470. )”
  14471. December 1992ˇÏ◊#ˇ ˇˇˇˇ#◊ 
  14472. d, Palatino
  14473. .°dONLNdñ$+¥@Uthis. If it does (as, for example, video digitizers do), make sure you check for your°dONLNdV$ñ0* Mhardware before you register your component. The Component Manager provides a°dONLNd§0ñ<* Nflag, cmpWantsRegisterMessage, that you can set in the componentFlags field of°dONLNdÛ<ñHˆ* Kyour component description record to inform the Component Manager that your°dONLNd?HñTˇ* Qcomponent wants to be called before it’s registered. This gives your component an°dONLNdëTñ`
  14474. * Topportunity to check for its associated hardware, and to decline registration if the°dONLNdÊ`ñl
  14475. * hardware isn’t available.,     Helvetica
  14476.     °dONLNdyñÑ *HCreating multiple instances in response to OpenComponent calls when your°dONLNdIÖñêÇ* .component doesn’t support multiple instances. 
  14477. °dONLNdwÑÇê)ÏOnly you can know whether°dONLNdëêñú(∏¥Pyour component can be opened multiple times. For instance, the Math component is°dONLNd‚úñ®* Pcapable of being opened as many times as memory allows (although our sample code°dONLNd3®ñ¥„* Nrestricts the number of open instances to three for the sake of illustration).°dONLNdÇ¥ñ¿* ONormally, a component that controls a single hardware resource should be opened°dONLNd“¿ñÃ
  14478. * Uonly once and should fail on subsequent open requests. This will prevent clients from°dONLNd(Ãñÿ%* oversubscribing your component.
  14479.     °dONLNdHÂñˇ*ENot performing requisite housekeeping in response to a CloseComponent°dONLNdéÒñ¸Ø* call. 
  14480. °dONLNdîظ)IBad things will happen, especially if you have hierarchies of components!°dONLNdfi¸ñ($¥UAs part of your close routine, remember to dispose of your private global storage and°dONLNd4ñŸ* Kto close any drivers, components, files, and so on that you no longer need.
  14481.     °dONLNdÅ!ñ,„*DAllowing multiple instances from a single registration of a hardware°dONLNdΔ-ñ8Ô* Ecomponent instead of allowing a single instance from each of multiple°dONLNd 9ñD›* registrations. 
  14482. °dONLNd8›DÌ)G:While this isn’t really a common mistake today, we want to°dONLNdVDñP (l¥Qemphasize that there’s a big difference between designing your component to allow°dONLNd®Pñ\* Omultiple instances versus registering the component multiple times and allowing°dONLNd¯\ñhÓ* Neach registered component to open only once. In the case of a generic software°dONLNdGhñtˆ* Mlibrary element (like Math), there’s no problem with multiple instances being°dONLNdïtñÄ›* Iopened. In the case of a hardware resource that’s being controlled with a°dONLNdflÄñå* Qcomponent, it’s almost always preferable to register the component once for every°dONLNd1åñò‡* Kresource that’s available (four widget cards would result in four different°dONLNd}òñ§›* Jregistrations rather than one registration that can be opened four times).°dONLNd…∞ñºÓ*LWhy does it matter? Consider an application whose sole purpose in life is to°dONLNd    ºñ»˘* Lmanage components that control hardware resources. It may be selecting which°dONLNd    c»ñ‘* Uresource to use, which one to configure, or which one to pipe into another. It’s much°dONLNd    π‘ñ‡ * Rmore natural to ask the Component Manager to provide a list of all components of a°dONLNd
  14483. ‡ñÏΔ* Fcertain type than it is to open each component that fits the criteria °dONLNd
  14484. R‡ΔÏÀ(‰n°dONLNd
  14485. S‡ÀÏ ) times (until it°dONLNd
  14486. dÏñ¯ (¥Dreturns an open error) in order to determine how many are available.°dONLNd
  14487. ™ñ˘*NTo kill a dead horse, suppose we have three identical video digitizers, and we°dONLNd
  14488. ˘ñ¸* Rwant to convey that information to the user via a menu list. If all are registered°dONLNd Lñ(˜* Kseparately, we can easily determine how many video digitizers are available°dONLNd ò(ñ4˘* L(without even opening them) by using the FindNextComponent call. If only one°dONLNd Â4ñ@* were registered, the list xBx/,Times
  14489. ({& 
  14490. +
  14491. 28
  14492. +md)e)v)e)l)o)p)  
  14493. )
  14494. December 1992ˇò◊#ˇ ˇˇˇˇ#◊ 
  14495. d, Palatino
  14496. .°dONLNd${+6@Qpresented to the user would only be a partial list. Take the blind leap of faith:°dONLNdR$0«* ®ister duplicate hardware resources!°dONLNdz<Hç*VAs a final note, if you’re registering a single component multiple times, be sure that°dONLNd—HTè* Tthe component name is unique for each registration. This allows users to distinguish°dONLNd&T`í* Pbetween available components (as in the menu example in the previous paragraph),°dONLNdw`lfi* ,and it also helps you avoid the next gotcha.,     Helvetica
  14497.     °dONLNd§yÑH*:Always counting on your component refCon being preserved. 
  14498. °dONLNdfixHÑá(†f We know this°dONLNdÎÑêe(¨6Kmay be upsetting to many of you, but there exists a situation in which your°dONLNd7êúq* Kcomponent refCon may not be valid. A component refCon (similar to a dialog,°dONLNdÉú®É* Swindow, or control refCon) is a 4-byte value that a component or client can use for°dONLNd◊®¥S* Eany purpose. It’s accessed through a pair of Component Manager calls,°dONLNd¥¿â* KGetComponentRefcon and SetComponentRefcon. Component refCons are frequently°dONLNdi¿Ãç* Sused to hold useful information such as device IDs or other shared global data, and°dONLNdΩÃÿ9* Dso can be quite critical to a component. We can hear you now . . . “°dONLNdÃ9ÿU(ÙWWhat°dONLNdÃUÿy)? You’re°dONLNdÿ‰d(6going to nuke my °dONLNdÿd‰ô)L global data°dONLNd*ÿô‰m)52 reference?!” Well, not exactly — it’s just not as°dONLNd]‰v( 6Pimmediately accessible as you would like it to be. Don’t worry, it’s possible to°dONLNdÆ¸á* Sdetect when your component is in this situation and retrieve the refCon from it, as°dONLNd¸¡* &long as you follow a few simple steps.°dONLNd* é*SThe situation in question arises when there’s not enough room in the system heap to°dONLNd~ ,ä* Popen a registered component. This happens when you run an application (that uses°dONLNdœ,8Å* Qyour component) in a partition space so large that all free memory is reserved by°dONLNd!8Dç* Pthe application. This will prevent the system heap from being able to grow. When°dONLNdrDPã* Othe application calls OpenComponent, the component may be unable to open in the°dONLNd¬P\o* Ksystem heap because there’s no available space. In this case, the Component°dONLNd\hX*
  14499. Manager will °dONLNd\Xho)@clone°dONLNd \ohå)> the component. When a component is cloned, a new registration°dONLNd_htê(ê6Tof the component is created in the caller’s heap, and the component ID of the cloned°dONLNd¥tÄ∏* %component is returned to the caller, °dONLNdŸt∏ÄΔ)†not°dONLNd‹tΔÄ[)! the component ID of the original°dONLNd˛Äå|(®6Pregistration. The clone is very nearly a perfect copy, but like the Dopplegänger°dONLNdOåòu* Captain Kirk in the °dONLNdcåuò†)]    Star Trek°dONLNdlå†òv)+. episode “What Are Little Girls Made Of?” it’s°dONLNdõò§è(¿6missing something crucial.°dONLNd∑∞ºç*SThat something is the component refCon. The refCon isn’t preserved in the clone, so°dONLNd     º»Ñ* Qif your component needs the refCon to perform properly, it must be recovered from°dONLNd    ]»‘ë* Sthe original component. How you go about doing this is a bit tricky. We assume that°dONLNd    ±‘‡ê* Ryou followed our advice and made sure that your component registered itself with a°dONLNd
  14500. ‡Ïß*  unique name. (This technique is °dONLNd
  14501. $‡ßϵ)ènot°dONLNd
  14502. '‡µÏj)( guaranteed to work properly unless this°dONLNd
  14503. Pϯı(62constraint is satisfied — you’ll see why shortly.)°dONLNd
  14504. Éy*MThe first problem is detecting whether your component has been cloned at open°dONLNd
  14505. —|* Mtime. You can determine this by examining your component’s A5 world using the°dONLNd (Ç* OGetComponentInstanceA5 routine. If the A5 world is nonzero, you’ve been cloned.°dONLNd o(4x* MBut wait, you say, what if I registered my component locally? Won’t it have a°dONLNd Ω4@A* valid A5 x4x&,Times
  14506. ({) 
  14507. +
  14508. 29
  14509. (Ú*1TECHNIQUES FOR WRITING AND DEBUGGING COMPONENTS  
  14510. )”
  14511. December 1992ˇÆ◊#ˇ ˇˇˇˇ#◊ 
  14512. d, Palatino
  14513. .°dONLNdñ$+¥@Tvalue? Yep, it sure will, but if it was registered locally, we won’t have this nasty°dONLNdU$ñ0* Psituation to begin with, since the component won’t be in the system heap anyway.°dONLNdß<ñH*ONow you know that you’ve been cloned, and that you can’t depend on your refCon.°dONLNd˜HñT* RHow do you retrieve it? Well, we know that there are two registrations of the same°dONLNdJTñ` * Rcomponent in the Component Manager registration list (the original and the clone).°dONLNdù`ñl* USo all we have to do is to set up a component description for our component, and then°dONLNdÛlñx* Nuse FindNextComponent to iterate through all registrations of it. We know what°dONLNdBxñÑ* Rour current component description and ID are, so we can just examine the component°dONLNdïÑñê* Qdescription and ID for each component returned. Once we find a component whose ID°dONLNdÁêñú* Sis different from ours but whose description is identical, we’ve found the original°dONLNd;úñ®* Ocomponent registration. We can then make a call to GetComponentRefcon to obtain°d